From: Lennart Poettering Date: Tue, 28 Nov 2023 10:05:52 +0000 (+0100) Subject: pam-util: fix pam_syslog_pam_error() format string X-Git-Tag: v255-rc4~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f200d6cae34f74f9b9ddd52ea9cae5b3de4efb95;p=thirdparty%2Fsystemd.git pam-util: fix pam_syslog_pam_error() format string To cut off a string at some position we must set the "precision" not the field width in format strings. This led to some assert()s being hit where they really should not be. --- diff --git a/src/shared/pam-util.c b/src/shared/pam-util.c index 37945ba743c..1057104194e 100644 --- a/src/shared/pam-util.c +++ b/src/shared/pam-util.c @@ -39,7 +39,8 @@ int pam_syslog_pam_error(pam_handle_t *handle, int level, int error, const char pamerr = "n/a"; /* We cannot have any formatting chars */ char buf[p - format + strlen(pamerr) + 1]; - xsprintf(buf, "%*s%s", (int)(p - format), format, pamerr); + xsprintf(buf, "%.*s%s", (int)(p - format), format, pamerr); + DISABLE_WARNING_FORMAT_NONLITERAL; pam_vsyslog(handle, level, buf, ap); REENABLE_WARNING;