From ac60763eac3d43b7234dd21286ad3ec3f17957fc Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Mon, 23 Jun 2014 10:24:45 +0200 Subject: [PATCH] Don't ignore too long lines in nss_files (BZ #17079) --- ChangeLog | 6 ++++++ NEWS | 2 +- nss/nss_files/files-XXX.c | 4 +++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 11232df..28f4771 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2014-06-23 Andreas Schwab + + [BZ #17079] + * nss/nss_files/files-XXX.c (get_contents): Store overflow marker + before reading the next line. + 2014-06-23 Will Newton * test-skeleton.c (signal_handler): Use printf and %m diff --git a/NEWS b/NEWS index 8d08cd5..b0d5ab2 100644 --- a/NEWS +++ b/NEWS @@ -20,7 +20,7 @@ Version 2.20 16854, 16876, 16877, 16878, 16882, 16885, 16888, 16890, 16912, 16915, 16916, 16917, 16922, 16927, 16928, 16932, 16943, 16958, 16965, 16966, 16967, 16977, 16978, 16984, 16990, 16996, 17009, 17022, 17031, 17042, - 17048, 17058, 17062, 17069, 17075. + 17048, 17058, 17062, 17069, 17075, 17079. * Optimized strchr implementation for AArch64. Contributed by ARM Ltd. diff --git a/nss/nss_files/files-XXX.c b/nss/nss_files/files-XXX.c index 00b2ecf..212b938 100644 --- a/nss/nss_files/files-XXX.c +++ b/nss/nss_files/files-XXX.c @@ -198,10 +198,12 @@ get_contents (char *linebuf, size_t len, FILE *stream) { int curlen = ((remaining_len > (size_t) INT_MAX) ? INT_MAX : remaining_len); - char *p = fgets_unlocked (curbuf, curlen, stream); + /* Terminate the line so that we can test for overflow. */ ((unsigned char *) curbuf)[curlen - 1] = 0xff; + char *p = fgets_unlocked (curbuf, curlen, stream); + /* EOF or read error. */ if (p == NULL) return gcr_error; -- 2.7.4