X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fauths%2Fcall_pam.c;h=9a46b6b63c45c2156cb5c6b2df0ba5738d652a4e;hb=c9f1be94cc304f0343c93b66efa41a747d307fb1;hp=0ce5871dfc3b49db3283b9a5f52b87fc48c891a2;hpb=93a6fce2ebf117f490d7ee11f066f75280d32386;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/auths/call_pam.c b/src/src/auths/call_pam.c index 0ce5871df..9a46b6b63 100644 --- a/src/src/auths/call_pam.c +++ b/src/src/auths/call_pam.c @@ -2,7 +2,7 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2009 */ +/* Copyright (c) University of Cambridge 1995 - 2018 */ /* See the file NOTICE for conditions of use and distribution. */ #include "../exim.h" @@ -66,17 +66,14 @@ static int pam_converse (int num_msg, PAM_CONVERSE_ARG2_TYPE **msg, struct pam_response **resp, void *appdata_ptr) { -int i; int sep = 0; struct pam_response *reply; if (pam_arg_ended) return PAM_CONV_ERR; -reply = malloc(sizeof(struct pam_response) * num_msg); +reply = store_get(sizeof(struct pam_response) * num_msg, FALSE); -if (reply == NULL) return PAM_CONV_ERR; - -for (i = 0; i < num_msg; i++) +for (int i = 0; i < num_msg; i++) { uschar *arg; switch (msg[i]->msg_style) @@ -89,7 +86,7 @@ for (i = 0; i < num_msg; i++) arg = US""; pam_arg_ended = TRUE; } - reply[i].resp = CS string_copy_malloc(arg); /* PAM frees resp */ + reply[i].resp = CS string_copy_perm(arg, FALSE); /* PAM frees resp */ reply[i].resp_retcode = PAM_SUCCESS; break; @@ -100,7 +97,6 @@ for (i = 0; i < num_msg; i++) break; default: /* Must be an error of some sort... */ - free (reply); pam_conv_had_error = TRUE; return PAM_CONV_ERR; } @@ -189,7 +185,7 @@ if (pam_error == PAM_SUCCESS) return OK; } -*errptr = (uschar *)pam_strerror(pamh, pam_error); +*errptr = US pam_strerror(pamh, pam_error); DEBUG(D_auth) debug_printf("PAM error: %s\n", *errptr); if (pam_error == PAM_USER_UNKNOWN ||