diff options
Diffstat (limited to 'pam/pam.c')
| -rw-r--r-- | pam/pam.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -19,11 +19,11 @@ #include "pam.h" +#include <security/pam_appl.h> +#include <security/pam_ext.h> #include <stdio.h> #include <stdlib.h> #include <string.h> - -#include <security/pam_appl.h> #include <sys/mman.h> // mlock/munlock #include "_cgo_export.h" // for input callbacks @@ -94,7 +94,7 @@ void freeArray(pam_handle_t* pamh, void** array, int error_status) { void* copyIntoSecret(void* data) { size_t size = strlen(data) + 1; // include null terminator - void* copy = malloc(size); + void* copy = calloc(1, size); // initialize to avoid a compiler warning mlock(copy, size); memcpy(copy, data, size); return copy; @@ -102,9 +102,13 @@ void* copyIntoSecret(void* data) { void freeSecret(pam_handle_t* pamh, char* data, int error_status) { size_t size = strlen(data) + 1; // Include null terminator - // Use volitile function pointer to actually clear the memory. + // Use volatile function pointer to actually clear the memory. static void* (*const volatile memset_sec)(void*, int, size_t) = &memset; memset_sec(data, 0, size); munlock(data, size); free(data); } + +void infoMessage(pam_handle_t* pamh, const char* message) { + pam_info(pamh, "%s", message); +} |