pam_winbind: Avoid a use of sprintf
authorVolker Lendecke <vl@samba.org>
Thu, 31 Mar 2016 12:41:07 +0000 (14:41 +0200)
committerJeremy Allison <jra@samba.org>
Thu, 31 Mar 2016 18:30:11 +0000 (20:30 +0200)
pam_winbind depends on talloc, which depends on libreplace, so we have asprintf
available.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
nsswitch/pam_winbind.c

index b2e1778c69d85b300e89311ed9e6c594b0f136ce..42c4f8e59649f05a065a3913789b2733da0fd3f6 100644 (file)
@@ -191,17 +191,17 @@ static void _pam_log_int(const pam_handle_t *pamh,
 {
        char *format2 = NULL;
        const char *service;
+       int ret;
 
        pam_get_item(pamh, PAM_SERVICE, (const void **) &service);
 
-       format2 = (char *)malloc(strlen(MODULE_NAME)+strlen(format)+strlen(service)+5);
-       if (format2 == NULL) {
+       ret = asprintf(&format2, "%s(%s): %s", MODULE_NAME, service, format);
+       if (ret == -1) {
                /* what else todo ? */
                vsyslog(err, format, args);
                return;
        }
 
-       sprintf(format2, "%s(%s): %s", MODULE_NAME, service, format);
        vsyslog(err, format2, args);
        SAFE_FREE(format2);
 }