[PATCH] pam_winbind avoid non-literal-format by clang/FreeBSD
Uri Simchoni
uri at samba.org
Tue Nov 28 19:59:47 UTC 2017
Hi,
This patch causes pam_winbind.c to pass FreeBSD picky-developer build,
avoiding the "non-literal format" warning without any #pragmas.
Please review and maybe push,
Uri.
-------------- next part --------------
From 0ac1c51fdcd2c88847fdf6b53e67cb5a9e85d21b Mon Sep 17 00:00:00 2001
From: Uri Simchoni <uri at samba.org>
Date: Sun, 19 Nov 2017 13:14:14 +0000
Subject: [PATCH] pam_winbind: avoid non-literal-format warning
Signed-off-by: Uri Simchoni <uri at samba.org>
---
nsswitch/pam_winbind.c | 24 +++++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/nsswitch/pam_winbind.c b/nsswitch/pam_winbind.c
index 3723b17..e14fcfe 100644
--- a/nsswitch/pam_winbind.c
+++ b/nsswitch/pam_winbind.c
@@ -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 */
@@ -714,6 +723,11 @@ static int _make_remark(struct pwb_context *ctx,
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,
va_list args)
{
char *var;
--
2.9.5
More information about the samba-technical
mailing list