pr: fix read from invalid memory with tabs in separator
commitd91aeef0527bf8ec0f83c3c3b69f3979c0b4c4a0
authorPádraig Brady <P@draigBrady.com>
Fri, 25 Nov 2016 13:46:23 +0000 (25 13:46 +0000)
committerPádraig Brady <P@draigBrady.com>
Fri, 25 Nov 2016 14:08:42 +0000 (25 14:08 +0000)
tree6b5fcdf4b81388ba9bf853484c6ab00231b2539a
parentca99c524e828cc1a1cfeff3cdfc5349f87143829
pr: fix read from invalid memory with tabs in separator

This was detected with:
  echo a > a; pr "-S$(printf "\t\t\t")" a -m a > /dev/null
Resulting in ASAN triggering:
  ====================================================
  ERROR: AddressSanitizer: global-buffer-overflow
  READ of size 1 at 0x00000041b622 thread T0
    #0 0x40506a in print_sep_string ../src/pr.c:2241
    #1 0x407ec4 in read_line ../src/pr.c:2493
    #2 0x40985c in print_page ../src/pr.c:1802
    #3 0x40985c in print_files ../src/pr.c:1618
    #4 0x4036e0 in main ../src/pr.c:1136

* src/pr.c (init_parameters): Ensure we only override the
specified separator when it's a single tab, thus matching
the calculated separator length.
* tests/pr/pr-tests.pl: Add a test case.
* NEWS: Mention the fix.
NEWS
src/pr.c
tests/pr/pr-tests.pl