From: Alejandro Colomar Date: Sun, 18 Feb 2024 17:36:04 +0000 (+0100) Subject: lib/utmp.c: Replace UT_LINESIZE by a NITEMS() calculation X-Git-Tag: 4.15.0-rc3~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5ff6edf9f29ed8b4f907f05925ad5006826d306b;p=thirdparty%2Fshadow.git lib/utmp.c: Replace UT_LINESIZE by a NITEMS() calculation A difference between 'struct utmp' and 'struct utmpx' is that the former uses UT_LINESIZE for the size of its array members, while the latter doesn't have a standard variable to get its size. Therefore, we need to get the number of elements in the array with NITEMS(). Reviewed-by: Iker Pedrosa Signed-off-by: Alejandro Colomar --- diff --git a/lib/utmp.c b/lib/utmp.c index 6c8f43ea4..388383e92 100644 --- a/lib/utmp.c +++ b/lib/utmp.c @@ -31,19 +31,23 @@ #ident "$Id$" +#define UTX_LINESIZE NITEMS(memberof(struct utmpx, ut_line)) + + /* * is_my_tty -- determine if "tty" is the same TTY stdin is using */ -static bool is_my_tty (const char tty[UT_LINESIZE]) +static bool +is_my_tty(const char tty[UTX_LINESIZE]) { - char full_tty[STRLEN("/dev/") + UT_LINESIZE + 1]; + char full_tty[STRLEN("/dev/") + UTX_LINESIZE + 1]; /* tmptty shall be bigger than full_tty */ static char tmptty[sizeof(full_tty) + 1]; full_tty[0] = '\0'; if (tty[0] != '/') strcpy (full_tty, "/dev/"); - strncat (full_tty, tty, UT_LINESIZE); + strncat(full_tty, tty, UTX_LINESIZE); if ('\0' == tmptty[0]) { const char *tname = ttyname (STDIN_FILENO); diff --git a/src/logoutd.c b/src/logoutd.c index cc7c2013b..eac118cb7 100644 --- a/src/logoutd.c +++ b/src/logoutd.c @@ -212,7 +212,7 @@ main(int argc, char **argv) tty_name[0] = '\0'; } - strncat (tty_name, ut->ut_line, UT_LINESIZE); + strncat(tty_name, ut->ut_line, NITEMS(ut->ut_line)); #ifndef O_NOCTTY #define O_NOCTTY 0 #endif