]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
write: fix potential string overflow
authorSami Kerola <kerolasa@iki.fi>
Sat, 8 Feb 2020 21:12:14 +0000 (21:12 +0000)
committerSami Kerola <kerolasa@iki.fi>
Sat, 15 Feb 2020 15:23:36 +0000 (15:23 +0000)
Noticed when compiled with gcc verion 9.2.1 20200130.

term-utils/write.c:182:7: warning: ‘strcmp’ argument 1 declared attribute
  ‘nonstring’ [-Wstringop-overflow=]
  182 |   if (strcmp(u->ut_line, ctl->src_tty_name) == 0) {
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/utmpx.h:31,
                 from term-utils/write.c:60:
/usr/include/bits/utmpx.h:59:8: note: argument ‘ut_line’ declared here
   59 |   char ut_line[__UT_LINESIZE]
      |        ^~~~~~~

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
term-utils/write.c

index 3436fbda20fdc8f1e1d374b486da266952ecaa0a..90eb18c67fcd57d2aa980febe300065bcbdd1c46 100644 (file)
@@ -179,7 +179,7 @@ static void search_utmp(struct write_control *ctl)
                if (ctl->src_uid && !tty_writeable)
                        /* skip ttys with msgs off */
                        continue;
-               if (strcmp(u->ut_line, ctl->src_tty_name) == 0) {
+               if (memcmp(u->ut_line, ctl->src_tty_name, strlen(ctl->src_tty_name) + 1) == 0) {
                        user_is_me = 1;
                        /* don't write to yourself */
                        continue;