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);