Module Name:    src
Committed By:   christos
Date:           Wed Dec 28 14:52:57 UTC 2011

Modified Files:
        src/lib/libpam/libpam: pam_debug_log.c
        src/lib/libpam/libpam/security: pam_mod_misc.h
        src/lib/libpam/modules/pam_login_access: pam_login_access.c

Log Message:
- reverse the order of printf formatting to make it easier for compilers to
  check printf arguments
- add compiler checking for printf formats and fix broken ones.
>From joerg@


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/lib/libpam/libpam/pam_debug_log.c
cvs rdiff -u -r1.3 -r1.4 src/lib/libpam/libpam/security/pam_mod_misc.h
cvs rdiff -u -r1.3 -r1.4 \
    src/lib/libpam/modules/pam_login_access/pam_login_access.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libpam/libpam/pam_debug_log.c
diff -u src/lib/libpam/libpam/pam_debug_log.c:1.3 src/lib/libpam/libpam/pam_debug_log.c:1.4
--- src/lib/libpam/libpam/pam_debug_log.c:1.3	Fri Mar  9 18:44:50 2007
+++ src/lib/libpam/libpam/pam_debug_log.c	Wed Dec 28 09:52:56 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: pam_debug_log.c,v 1.3 2007/03/09 23:44:50 hubertf Exp $	*/
+/*	$NetBSD: pam_debug_log.c,v 1.4 2011/12/28 14:52:56 christos Exp $	*/
 
 /*-
  * Copyright 2001 Mark R V Murray
@@ -30,7 +30,7 @@
 #ifdef __FreeBSD__
 __FBSDID("$FreeBSD: src/lib/libpam/libpam/pam_debug_log.c,v 1.8 2002/04/14 16:44:04 des Exp $");
 #else
-__RCSID("$NetBSD: pam_debug_log.c,v 1.3 2007/03/09 23:44:50 hubertf Exp $");
+__RCSID("$NetBSD: pam_debug_log.c,v 1.4 2011/12/28 14:52:56 christos Exp $");
 #endif
 
 #include <stdarg.h>
@@ -50,22 +50,24 @@ _pam_verbose_error(pam_handle_t *pamh, i
     const char *file, const char *function, const char *format, ...)
 {
 	va_list ap;
-	char *fmtbuf;
+	char *msg;
+	int rv;
 	const char *modname, *period;
 
-	if (!(flags & PAM_SILENT) && !openpam_get_option(pamh, "no_warn")) {
-		modname = strrchr(file, '/');
-		if (modname == NULL)
-			modname = file;
-		period = strchr(modname, '.');
-		if (period == NULL)
-			period = strchr(modname, '\0');
-		va_start(ap, format);
-		asprintf(&fmtbuf, "%.*s: %s: %s\n",
-		    (int)(ssize_t)(period - modname), modname, function,
-		    format);
-		pam_verror(pamh, fmtbuf, ap);
-		free(fmtbuf);
-		va_end(ap);
-	}
+	if ((flags & PAM_SILENT) || openpam_get_option(pamh, "no_warn"))
+		return;
+	modname = strrchr(file, '/');
+	if (modname == NULL)
+		modname = file;
+	period = strchr(modname, '.');
+	if (period == NULL)
+		period = strchr(modname, '\0');
+	va_start(ap, format);
+	rv = vasprintf(&msg, format, ap);
+	va_end(ap);
+	if (rv < 0)
+		return;
+	pam_error(pamh, "%.*s: %s: %s\n", (int)(ssize_t)(period - modname),
+	    modname, function, msg);
+	free(msg);
 }

Index: src/lib/libpam/libpam/security/pam_mod_misc.h
diff -u src/lib/libpam/libpam/security/pam_mod_misc.h:1.3 src/lib/libpam/libpam/security/pam_mod_misc.h:1.4
--- src/lib/libpam/libpam/security/pam_mod_misc.h:1.3	Sun Dec 12 03:30:26 2004
+++ src/lib/libpam/libpam/security/pam_mod_misc.h	Wed Dec 28 09:52:56 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: pam_mod_misc.h,v 1.3 2004/12/12 08:30:26 christos Exp $	*/
+/*	$NetBSD: pam_mod_misc.h,v 1.4 2011/12/28 14:52:56 christos Exp $	*/
 
 /*-
  * Copyright 1998 Juniper Networks, Inc.
@@ -43,7 +43,7 @@
 
 __BEGIN_DECLS
 void	_pam_verbose_error(pam_handle_t *, int, const char *,
-		const char *, const char *, ...);
+		const char *, const char *, ...) __printflike(5, 6);
 __END_DECLS
 
 #define	PAM_LOG(...) \

Index: src/lib/libpam/modules/pam_login_access/pam_login_access.c
diff -u src/lib/libpam/modules/pam_login_access/pam_login_access.c:1.3 src/lib/libpam/modules/pam_login_access/pam_login_access.c:1.4
--- src/lib/libpam/modules/pam_login_access/pam_login_access.c:1.3	Fri Nov  3 13:03:23 2006
+++ src/lib/libpam/modules/pam_login_access/pam_login_access.c	Wed Dec 28 09:52:56 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: pam_login_access.c,v 1.3 2006/11/03 18:03:23 christos Exp $	*/
+/*	$NetBSD: pam_login_access.c,v 1.4 2011/12/28 14:52:56 christos Exp $	*/
 
 /*-
  * Copyright (c) 2001 Mark R V Murray
@@ -40,7 +40,7 @@
 #ifdef __FreeBSD__
 __FBSDID("$FreeBSD: src/lib/libpam/modules/pam_login_access/pam_login_access.c,v 1.11 2004/02/10 10:13:21 des Exp $");
 #else
-__RCSID("$NetBSD: pam_login_access.c,v 1.3 2006/11/03 18:03:23 christos Exp $");
+__RCSID("$NetBSD: pam_login_access.c,v 1.4 2011/12/28 14:52:56 christos Exp $");
 #endif
 
 #define _BSD_SOURCE
@@ -90,14 +90,14 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int
 		if (login_access(user, tty) != 0)
 			return (PAM_SUCCESS);
 		PAM_VERBOSE_ERROR("%s is not allowed to log in on %s",
-		    user, tty);
+		    (const char *)user, (const char *)tty);
 	} else {
 		PAM_LOG("Checking login.access for user %s from host %s",
 		    (const char *)user, (const char *)rhost);
 		if (login_access(user, rhost) != 0)
 			return (PAM_SUCCESS);
 		PAM_VERBOSE_ERROR("%s is not allowed to log in from %s",
-		    user, rhost);
+		    (const char *)user, (const char *)rhost);
 	}
 
 	return (PAM_AUTH_ERR);

Reply via email to