Blame SOURCES/diffutils-3.6-shows_incorrect_data.patch

a4661f
commit ffd63aedad3c0eb08ebb27103e5f242f8732dc0c
a4661f
Author: Paul Eggert <eggert@cs.ucla.edu>
a4661f
Date:   Tue Jul 24 10:18:28 2018 -0700
a4661f
a4661f
    cmp: fix bug in -b diagnostic
a4661f
    
a4661f
    Problem reported by mancha (Bug#32249).
a4661f
    * src/cmp.c (count_newlines): Restore old value of sentinel.
a4661f
    * tests/cmp: Test for the bug.
a4661f
a4661f
diff --git a/src/cmp.c b/src/cmp.c
a4661f
index 04638e3..2811392 100644
a4661f
--- a/src/cmp.c
a4661f
+++ b/src/cmp.c
a4661f
@@ -639,9 +639,11 @@ count_newlines (char *buf, size_t bufsize)
a4661f
   size_t count = 0;
a4661f
   char *p;
a4661f
   char *lim = buf + bufsize;
a4661f
+  char ch = *lim;
a4661f
   *lim = '\n';
a4661f
   for (p = buf; (p = rawmemchr (p, '\n')) != lim; p++)
a4661f
     count++;
a4661f
+  *lim = ch;
a4661f
   return count;
a4661f
 }
a4661f
 
a4661f
diff --git a/tests/cmp b/tests/cmp
a4661f
index 160c1ea..ca0fe5e 100755
a4661f
--- a/tests/cmp
a4661f
+++ b/tests/cmp
a4661f
@@ -208,4 +208,14 @@ done >out1
a4661f
 
a4661f
 compare exp1 out1 || fail=1
a4661f
 
a4661f
+printf 'bad\n' >bad
a4661f
+printf 'bug\n' >bug
a4661f
+echo LC_ALL=C cmp -b bad bug
a4661f
+LC_ALL=C cmp -b bad bug
a4661f
+test $? -eq 1 || fail=1
a4661f
+case `LC_ALL=C cmp -b bad bug` in
a4661f
+  'bad bug differ: byte 2, line 1 is '*' a '*' u') ;;
a4661f
+  *) echo 'expected cmp -b to report a and u'; fail=1;;
a4661f
+esac
a4661f
+
a4661f
 Exit $fail