From 72aa1db70c59e6bb43afc4315cef00db3ecfef84 Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt Date: Fri, 1 Mar 2019 18:35:49 +0100 Subject: [PATCH] last: do not use non-standard __UT_NAMESIZE In commit b22332dd4 (last: fix wtmp user name buffer overflow [asan], 2019-01-13), we started to make sure that the `ut_user` field of the `utmpx` struct is always NUL-terminated. The implementation makes use of the `__UT_NAMESIZE` define to determine the position of the last character in that array. The problem is that this is a non-standard define that is not necessarily available on non-glibc platforms. As there is no standardized define, we should just use `sizeof`. This fixes compilation on musl libc based systems. Signed-off-by: Patrick Steinhardt --- login-utils/last.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-utils/last.c b/login-utils/last.c index be744b0791..303adeacd8 100644 --- a/login-utils/last.c +++ b/login-utils/last.c @@ -600,7 +600,7 @@ static int is_phantom(const struct last_control *ctl, struct utmpx *ut) if (ut->ut_tv.tv_sec < ctl->boot_time.tv_sec) return 1; - ut->ut_user[__UT_NAMESIZE - 1] = '\0'; + ut->ut_user[sizeof(ut->ut_user) - 1] = '\0'; pw = getpwnam(ut->ut_user); if (!pw) return 1; -- 2.39.2