From: Samanta Navarro Date: Mon, 30 Jan 2023 11:53:47 +0000 (+0000) Subject: Explicitly override only newlines X-Git-Tag: 4.14.0-rc1~202 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ffc480c2e93f05266e4b130229877ad13f71a8c0;p=thirdparty%2Fshadow.git Explicitly override only newlines Override only newlines with '\0' to avoid undesired truncation of actual line content. Signed-off-by: Samanta Navarro --- diff --git a/lib/port.c b/lib/port.c index 0bea2ef41..90eb14987 100644 --- a/lib/port.c +++ b/lib/port.c @@ -130,8 +130,8 @@ static struct port *getportent (void) again: /* - * Get the next line and remove the last character, which - * is a '\n'. Lines which begin with '#' are all ignored. + * Get the next line and remove optional trailing '\n'. + * Lines which begin with '#' are all ignored. */ if (fgets (buf, (int) sizeof buf, ports) == 0) { @@ -149,7 +149,7 @@ static struct port *getportent (void) * TTY devices. */ - buf[strlen (buf) - 1] = 0; + buf[strcspn (buf, "\n")] = 0; port.pt_names = ttys; for (cp = buf, j = 0; j < PORT_TTY; j++) { diff --git a/libmisc/console.c b/libmisc/console.c index bc024eba6..63d3ceb31 100644 --- a/libmisc/console.c +++ b/libmisc/console.c @@ -71,7 +71,8 @@ static bool is_listed (const char *cfgin, const char *tty, bool def) */ while (fgets (buf, (int) sizeof (buf), fp) != NULL) { - buf[strlen (buf) - 1] = '\0'; + /* Remove optional trailing '\n'. */ + buf[strcspn (buf, "\n")] = '\0'; if (strcmp (buf, tty) == 0) { (void) fclose (fp); return true;