From 441c0f5e1e05db77c62f3281525345ff322b0a65 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Fri, 7 Mar 2014 09:26:22 +0100 Subject: PAM: Test return value of strdup Warnings reported by Coverity (12463,12464) Dereferencing a pointer that might be null pi->pam_authtok when calling strlen. Dereferencing a pointer that might be null action when calling strncmp. Reviewed-by: Stephen Gallagher --- src/sss_client/pam_sss.c | 4 ++++ src/sss_client/pam_test_client.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/sss_client/pam_sss.c b/src/sss_client/pam_sss.c index 638e211ee..d45b2e88f 100644 --- a/src/sss_client/pam_sss.c +++ b/src/sss_client/pam_sss.c @@ -1368,6 +1368,10 @@ static int get_authtok_for_password_change(pam_handle_t *pamh, } } else { pi->pam_authtok = strdup(pi->pamstack_oldauthtok); + if (pi->pam_authtok == NULL) { + D(("strdup failed")); + return PAM_BUF_ERR; + } pi->pam_authtok_type = SSS_AUTHTOK_TYPE_PASSWORD; pi->pam_authtok_size = strlen(pi->pam_authtok); } diff --git a/src/sss_client/pam_test_client.c b/src/sss_client/pam_test_client.c index ef424e77c..af8a0da90 100644 --- a/src/sss_client/pam_test_client.c +++ b/src/sss_client/pam_test_client.c @@ -53,6 +53,11 @@ int main(int argc, char *argv[]) { user = strdup(argv[2]); } + if (action == NULL || user == NULL) { + fprintf(stderr, "Out of memory!\n"); + return 1; + } + fprintf(stdout, "action: %s\nuser: %s\n", action,user); ret = pam_start("sss_test", user, &conv, &pamh); -- cgit