Hi,

GNU md5sum errors out when passed an empty file via -c. Add a test and
make bb md5sum do the same.

- Lauri

-- 
http://www.fastmail.com - Choose from over 50 domains or use your own

From f5a686ea2ac56d91f6cecf16b234b43608a51ec7 Mon Sep 17 00:00:00 2001
From: Lauri Kasanen <cur...@operamail.com>
Date: Sat, 25 Jun 2016 20:41:03 +0300
Subject: [PATCH 1/2] md5sum: Add a test for -c with empty file

Signed-off-by: Lauri Kasanen <cur...@operamail.com>
---
 testsuite/md5sum/md5sum-c-empty | 5 +++++
 1 file changed, 5 insertions(+)
 create mode 100644 testsuite/md5sum/md5sum-c-empty

diff --git a/testsuite/md5sum/md5sum-c-empty b/testsuite/md5sum/md5sum-c-empty
new file mode 100644
index 0000000..3a3ed72
--- /dev/null
+++ b/testsuite/md5sum/md5sum-c-empty
@@ -0,0 +1,5 @@
+# An empty file passed to -c must error out.
+
+touch empty
+busybox md5sum -c empty && exit 1
+exit 0
-- 
2.6.2

From 7bc302f6d05290803702037389cce39215b7f199 Mon Sep 17 00:00:00 2001
From: Lauri Kasanen <cur...@operamail.com>
Date: Sat, 25 Jun 2016 20:46:13 +0300
Subject: [PATCH 2/2] md5_sha1_sum: error out on -c empty file

This is needed to match GNU md5sum behavior.

Signed-off-by: Lauri Kasanen <cur...@operamail.com>
---
 coreutils/md5_sha1_sum.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/coreutils/md5_sha1_sum.c b/coreutils/md5_sha1_sum.c
index 1a5342e..89af9a3 100644
--- a/coreutils/md5_sha1_sum.c
+++ b/coreutils/md5_sha1_sum.c
@@ -200,6 +200,7 @@ int md5_sha1_sum_main(int argc UNUSED_PARAM, char **argv)
                        char *line;
                        int count_total = 0;
                        int count_failed = 0;
+                       uint8_t found = 0;
 
                        pre_computed_stream = xfopen_stdin(*argv);
 
@@ -224,6 +225,7 @@ int md5_sha1_sum_main(int argc UNUSED_PARAM, char **argv)
                                }
                                *filename_ptr = '\0';
                                filename_ptr += 2;
+                               found = 1;
 
                                hash_value = hash_file(filename_ptr);
 
@@ -244,6 +246,13 @@ int md5_sha1_sum_main(int argc UNUSED_PARAM, char **argv)
                                bb_error_msg("WARNING: %d of %d computed 
checksums did NOT match",
                                                count_failed, count_total);
                        }
+                       if (!found) {
+                               return_value = EXIT_FAILURE;
+
+                               if (!(flags & FLAG_SILENT)) {
+                                       bb_error_msg("WARNING: no checksum 
lines found");
+                               }
+                       }
                        fclose_if_not_stdin(pre_computed_stream);
                } else {
                        uint8_t *hash_value = hash_file(*argv);
-- 
2.6.2

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to