diff options
| author | Jim Meyering <jim@meyering.net> | 2000-10-21 19:57:41 +0000 |
|---|---|---|
| committer | Jim Meyering <jim@meyering.net> | 2000-10-21 19:57:41 +0000 |
| commit | 13e80acf0777bb5aed3d6c766064ed23d7ae0739 (patch) | |
| tree | 1b054436c4973afe2dd1b3e696b0272957dcf475 /src/cat.c | |
| parent | Prevent a counter buffer overrun when numbering lines and when (diff) | |
| download | coreutils-13e80acf0777bb5aed3d6c766064ed23d7ae0739.tar.gz coreutils-13e80acf0777bb5aed3d6c766064ed23d7ae0739.zip | |
The command, `yes ''|./cat -n' would stop printing after INT_MAX lines.
(cat): Never let `newlines' exceed 3.
Diffstat (limited to 'src/cat.c')
| -rw-r--r-- | src/cat.c | 20 |
1 files changed, 14 insertions, 6 deletions
@@ -350,13 +350,21 @@ cat ( if (++newlines > 0) { - /* Are multiple adjacent empty lines to be substituted by - single ditto (-s), and this was the second empty line? */ - - if (squeeze_empty_lines && newlines >= 2) + if (newlines >= 2) { - ch = *bpin++; - continue; + /* Limit this to 2 here. Otherwise, with lots of + consecutive newlines, the counter could wrap + around at INT_MAX. */ + newlines = 2; + + /* Are multiple adjacent empty lines to be substituted + by single ditto (-s), and this was the second empty + line? */ + if (squeeze_empty_lines) + { + ch = *bpin++; + continue; + } } /* Are line numbers to be written at empty lines (-n)? */ |
