summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source3/pam_smbpass/pam_smb_auth.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/source3/pam_smbpass/pam_smb_auth.c b/source3/pam_smbpass/pam_smb_auth.c
index ac5ef3f21c..1b8ae5eb85 100644
--- a/source3/pam_smbpass/pam_smb_auth.c
+++ b/source3/pam_smbpass/pam_smb_auth.c
@@ -41,14 +41,21 @@
#include "support.h"
+static void ret_data_cleanup(pam_handle_t *pamh, void *data, int error_status)
+{
+ free(data);
+}
+
#define AUTH_RETURN \
do { \
/* Restore application signal handler */ \
CatchSignal(SIGPIPE, oldsig_handler); \
if(ret_data) { \
*ret_data = retval; \
- pam_set_data( pamh, "smb_setcred_return" \
- , (void *) ret_data, NULL ); \
+ pam_set_data(pamh, \
+ "smb_setcred_return", \
+ (void *)ret_data, \
+ ret_data_cleanup); \
} \
TALLOC_FREE(frame); \
return retval; \