From f200d6cae34f74f9b9ddd52ea9cae5b3de4efb95 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 28 Nov 2023 11:05:52 +0100 Subject: [PATCH] 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. --- src/shared/pam-util.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/shared/pam-util.c b/src/shared/pam-util.c index 37945ba743..1057104194 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;