From: Sami Kerola Date: Sun, 16 Jan 2011 23:27:06 +0000 (+0100) Subject: uniq: don't continue field processing after end of line X-Git-Tag: v8.10~68 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aa9f02bc30c58ab3ec20d243b3cc7c24918bad37;p=thirdparty%2Fcoreutils.git uniq: don't continue field processing after end of line * NEWS (Bug fixes): Mention it. * src/uniq.c (find_field): Stop processing loop when end of line is reached. Before this fix, 'uniq -f 10000000000 /etc/passwd' would run for a very long time. --- diff --git a/NEWS b/NEWS index 9ccad63a3f..3ec35c7bb0 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,8 @@ GNU coreutils NEWS -*- outline -*- rm -f no longer fails for EINVAL or EILSEQ on file systems that reject file names invalid for that file system. + uniq -f NUM no longer tries to process fields after end of line. + * Noteworthy changes in release 8.9 (2011-01-04) [stable] diff --git a/src/uniq.c b/src/uniq.c index 7bdbc4f866..9c7e37c7b9 100644 --- a/src/uniq.c +++ b/src/uniq.c @@ -214,7 +214,7 @@ find_field (struct linebuffer const *line) size_t size = line->length - 1; size_t i = 0; - for (count = 0; count < skip_fields; count++) + for (count = 0; count < skip_fields && i < size; count++) { while (i < size && isblank (to_uchar (lp[i]))) i++;