pam_winbind: avoid non-literal-format warning
authorUri Simchoni <uri@samba.org>
Sun, 19 Nov 2017 13:14:14 +0000 (13:14 +0000)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 29 Nov 2017 11:50:49 +0000 (12:50 +0100)
Signed-off-by: Uri Simchoni <uri@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Wed Nov 29 12:50:49 CET 2017 on sn-devel-144

nsswitch/pam_winbind.c

index 3723b17ad42aea8b86e36db3a99fa94f26da0640..e14fcfeb2639800be98cea70b1aa7f52fa7a2df2 100644 (file)
@@ -174,6 +174,10 @@ static inline void textdomain_init(void)
 
 
 /* some syslogging */
+static void _pam_log_int(const pam_handle_t *pamh,
+                        int err,
+                        const char *format,
+                        va_list args) PRINTF_ATTRIBUTE(3, 0);
 
 #ifdef HAVE_PAM_VSYSLOG
 static void _pam_log_int(const pam_handle_t *pamh,
@@ -189,21 +193,26 @@ static void _pam_log_int(const pam_handle_t *pamh,
                         const char *format,
                         va_list args)
 {
-       char *format2 = NULL;
+       char *base = NULL;
+       va_list args2;
        const char *service;
        int ret;
 
+       va_copy(args2, args);
+
        pam_get_item(pamh, PAM_SERVICE, (const void **) &service);
 
-       ret = asprintf(&format2, "%s(%s): %s", MODULE_NAME, service, format);
+       ret = vasprintf(&base, format, args);
        if (ret == -1) {
                /* what else todo ? */
-               vsyslog(err, format, args);
+               vsyslog(err, format, args2);
+               va_end(args2);
                return;
        }
 
-       vsyslog(err, format2, args);
-       SAFE_FREE(format2);
+       syslog(err, "%s(%s): %s", MODULE_NAME, service, base);
+       SAFE_FREE(base);
+       va_end(args2);
 }
 #endif /* HAVE_PAM_VSYSLOG */
 
@@ -711,6 +720,11 @@ static int _make_remark(struct pwb_context *ctx,
        return retval;
 }
 
+static int _make_remark_v(struct pwb_context *ctx,
+                         int type,
+                         const char *format,
+                         va_list args) PRINTF_ATTRIBUTE(3, 0);
+
 static int _make_remark_v(struct pwb_context *ctx,
                          int type,
                          const char *format,