Subject: bug#50611: one-byte (write) heap-buffer-underrun

From: Pádraig Brady <[email-masked]>
Date: Thu, 16 Sep 2021 12:34:18 +0100

On 16/09/2021 08:26, Paul Eggert wrote:
> Thanks for reporting that. I installed the attached to fix it.

Thanks to you both.
The fix looks good.

It got me thinking though, that we should not we warning/failing on blank lines.
I.e., we should be treating blank lines like comments.
The attached does that.

cheers,
Pádraig

>From 110556356911f1f2e0274eda803f8018f543266d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <[email-masked]>
Date: Thu, 16 Sep 2021 12:29:12 +0100
Subject: [PATCH] digest: ignore empty lines when checking

* src/digest.c (digest_check): Treat blank lines like comments,
as commented checksum files very often have blank lines.
* tests/misc/md5sum.pl: Adjust accordingly.
---
 src/digest.c         | 4 ++++
 tests/misc/md5sum.pl | 9 +++------
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/digest.c b/src/digest.c
index 9ee37a104..d13a05a3a 100644
--- a/src/digest.c
+++ b/src/digest.c
@@ -1075,6 +1075,10 @@ digest_check (char const *checkfile_name)
       line_length -= line[line_length - (0 < line_length)] == '\r';
       line[line_length] = '\0';
 
+      /* Ignore blank lines.  */
+      if (line_length == 0)
+        continue;
+
       if (! (split_3 (line, line_length, &hex_digest, &binary, &filename)
              && ! (is_stdin && STREQ (filename, "-"))))
         {
diff --git a/tests/misc/md5sum.pl b/tests/misc/md5sum.pl
index 09c2174f5..9b18219ac 100755
--- a/tests/misc/md5sum.pl
+++ b/tests/misc/md5sum.pl
@@ -53,18 +53,15 @@ my @Tests =
                                 {IN=> {'f.md5' => "$degenerate  f\r\n"}},
                                 {OUT=>"f: OK\n"}],
 
-     # Same as above, but with an added empty line, to provoke --strict.
+     # Same as above, but with an added empty line, to test --strict.
      ['ck-strict-1', '--check --strict', {AUX=> {f=> ''}},
                                 {IN=> {'f.md5' => "$degenerate  f\n\n"}},
-                                {OUT=>"f: OK\n"},
-                                {ERR=>"md5sum: "
-                                 . "WARNING: 1 line is improperly formatted\n"},
-                                {EXIT=> 1}],
+                                {OUT=>"f: OK\n"}],
 
      # As above, but with the invalid line first, to ensure that following
      # lines are processed in spite of the preceding invalid input line.
      ['ck-strict-2', '--check --strict', {AUX=> {f=> ''}},
-                                {IN=> {'in.md5' => "\n$degenerate  f\n"}},
+                                {IN=> {'in.md5' => "invalid\n$degenerate  f\n"}},
                                 {OUT=>"f: OK\n"},
                                 {ERR=>"md5sum: "
                                  . "WARNING: 1 line is improperly formatted\n"},
-- 
2.26.2