? o ? libpam/new ? libpam/x ? libpam/y Index: libpam/pam_debug_log.c =================================================================== RCS file: /cvsroot/src/lib/libpam/libpam/pam_debug_log.c,v retrieving revision 1.3 diff -u -p -u -r1.3 pam_debug_log.c --- libpam/pam_debug_log.c 9 Mar 2007 23:44:50 -0000 1.3 +++ libpam/pam_debug_log.c 28 Dec 2011 14:46:51 -0000 @@ -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: libpam/security/pam_mod_misc.h =================================================================== RCS file: /cvsroot/src/lib/libpam/libpam/security/pam_mod_misc.h,v retrieving revision 1.3 diff -u -p -u -r1.3 pam_mod_misc.h --- libpam/security/pam_mod_misc.h 12 Dec 2004 08:30:26 -0000 1.3 +++ libpam/security/pam_mod_misc.h 28 Dec 2011 14:46:51 -0000 @@ -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: modules/pam_login_access/pam_login_access.c =================================================================== RCS file: /cvsroot/src/lib/libpam/modules/pam_login_access/pam_login_access.c,v retrieving revision 1.3 diff -u -p -u -r1.3 pam_login_access.c --- modules/pam_login_access/pam_login_access.c 3 Nov 2006 18:03:23 -0000 1.3 +++ modules/pam_login_access/pam_login_access.c 28 Dec 2011 14:46:51 -0000 @@ -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);