? o Index: openpam_log.c =================================================================== RCS file: /cvsroot/src/external/bsd/openpam/dist/lib/openpam_log.c,v retrieving revision 1.2 diff -u -p -u -r1.2 openpam_log.c --- openpam_log.c 25 Dec 2011 22:27:55 -0000 1.2 +++ openpam_log.c 28 Dec 2011 14:48:40 -0000 @@ -100,8 +100,8 @@ void _openpam_log(int level, const char *func, const char *fmt, ...) { va_list ap; - char *format; - int priority; + char *msg; + int priority, rv; switch (level) { case PAM_LOG_DEBUG: @@ -120,14 +120,18 @@ _openpam_log(int level, const char *func priority = LOG_ERR; break; } + va_start(ap, fmt); - if (asprintf(&format, "in %s(): %s", func, fmt) > 0) { - vsyslog(priority, format, ap); - FREE(format); - } else { - vsyslog(priority, fmt, ap); - } + rv = vasprintf(&msg, fmt, ap); va_end(ap); + + if (rv < 0) { + syslog(priority, "Can't format message from %s: %s (%m)", + func, fmt); + return; + } + syslog(priority, "in %s(): %s", func, msg); + FREE(msg); } #endif