From: Alejandro Colomar Date: Tue, 2 Jul 2024 12:43:26 +0000 (+0200) Subject: lib/port.c: getportent(): Make sure there are at least 2 ':' in the line X-Git-Tag: 4.17.0-rc1~138 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c3f97e251ef13f24538e4e52ffe4cba01ea0e840;p=thirdparty%2Fshadow.git lib/port.c: getportent(): Make sure there are at least 2 ':' in the line Otherwise, the line is invalidly formatted, and we ignore it. Closes: Signed-off-by: Alejandro Colomar --- diff --git a/lib/port.c b/lib/port.c index f55bc724c..cac4ba44f 100644 --- a/lib/port.c +++ b/lib/port.c @@ -147,17 +147,15 @@ next: * TTY devices. */ + if (strchr(buf, ':') == NULL) + goto next; + port.pt_names = ttys; for (cp = buf, j = 0; j < PORT_TTY; j++) { port.pt_names[j] = cp; cp = strpbrk(cp, ":,"); - if (cp == NULL) - goto next; /* line format error */ - - if (':' == *cp) { /* end of tty name list */ + if (':' == *cp) /* end of tty name list */ break; - } - if (',' == *cp) /* end of current tty name */ stpcpy(cp++, ""); } @@ -171,6 +169,9 @@ next: * The last entry in the list is a NULL pointer. */ + if (strchr(cp, ':') == NULL) + goto next; + if (':' != *cp) { port.pt_users = users; port.pt_users[0] = cp;