From 39a1582d7e0ddea76c6358cd0c4cc615bdf1c276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dag-Erling=20Sm=C3=B8rgrav?= Date: Wed, 13 Feb 2002 02:14:55 +0000 Subject: [PATCH] Initialize tmp to NULL so that items can be cleared as intended. Don't forget to fill the pam_conv structure after allocating it. Sponsored by: DARPA, NAI Labs git-svn-id: svn+ssh://svn.openpam.org/svn/openpam/trunk@55 185d5e19-27fe-0310-9dcf-9bff6b9f3609 --- lib/pam_set_item.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/pam_set_item.c b/lib/pam_set_item.c index cc6f9c4..5405a4e 100644 --- a/lib/pam_set_item.c +++ b/lib/pam_set_item.c @@ -62,6 +62,7 @@ pam_set_item(pam_handle_t *pamh, return (PAM_SYSTEM_ERR); slot = &pamh->item[item_type]; + tmp = NULL; switch (item_type) { case PAM_SERVICE: case PAM_USER: @@ -75,18 +76,20 @@ pam_set_item(pam_handle_t *pamh, if (*slot != NULL) size = strlen(*slot) + 1; if (item != NULL) - tmp = strdup(item); + if ((tmp = strdup(item)) == NULL) + return (PAM_BUF_ERR); break; case PAM_CONV: size = sizeof(struct pam_conv); - if (item != NULL) - tmp = malloc(size); + if (item != NULL) { + if ((tmp = malloc(size)) == NULL) + return (PAM_BUF_ERR); + memcpy(tmp, item, sizeof(struct pam_conv)); + } break; default: return (PAM_SYSTEM_ERR); } - if (item != NULL && tmp == NULL) - return (PAM_BUF_ERR); if (*slot != NULL) { memset(*slot, 0xd0, size); free(*slot);