bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [FEATURE_REQUEST] support openssl checksum format too


From: Jim Meyering
Subject: Re: [FEATURE_REQUEST] support openssl checksum format too
Date: Wed, 07 Oct 2009 09:58:57 +0200

Guenter Knauf wrote:
> was still something wrong with my last patch?

Just the timing ;-)
It was a little too close to release time,
and applying it, adjusting NEWS and the commit log,
reviewing, and testing would have taken time I didn't have.

And the fact that you haven't filed copyright assignment paperwork.
Your change is under the 10-15-line threshold if we look only at the
changes to md5sum.c, yet over if we also count the added tests.
I've applied the patch, but would appreciate it if you'd start
the process:

  http://git.sv.gnu.org/cgit/coreutils.git/plain/HACKING

Please follow the instructions listed in the "Copyright assignment"
paragraph at that link.

Here's what I expect to push:

>From b95be30e3fc4831391355f89a959d0c503bed5fb Mon Sep 17 00:00:00 2001
From: Guenter Knauf <address@hidden>
Date: Sat, 3 Oct 2009 23:24:26 +0200
Subject: [PATCH] md5sum, sha*sum: also accept openssl checksum syntax

* src/md5sum.c (split_3): Accept openssl checksum syntax, which
differs only by two spaces from that of the bsd checksum tools:
openssl: MD5(f)= d41d8cd98f00b204e9800998ecf8427e
bsd:     MD5 (f) = d41d8cd98f00b204e9800998ecf8427e
---
 NEWS               |    7 +++++++
 src/md5sum.c       |   11 ++++++-----
 tests/misc/md5sum  |   10 ++++++++++
 tests/misc/sha1sum |   11 +++++++++++
 4 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/NEWS b/NEWS
index d8e23c4..ff5e9a2 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,13 @@ GNU coreutils NEWS                                    -*- 
outline -*-

 * Noteworthy changes in release ?.? (????-??-??) [?]

+** Bug fixes
+
+** New features
+
+  md5sum --check now also accepts openssl-style checksums.
+  So do sha1sum, sha224sum, sha384sum and sha512sum.
+

 * Noteworthy changes in release 8.0 (2009-10-06) [beta]

diff --git a/src/md5sum.c b/src/md5sum.c
index e004c5e..aa2a144 100644
--- a/src/md5sum.c
+++ b/src/md5sum.c
@@ -251,11 +251,10 @@ static bool
 split_3 (char *s, size_t s_len,
          unsigned char **hex_digest, int *binary, char **file_name)
 {
-  size_t i;
   bool escaped_filename = false;
   size_t algo_name_len;

-  i = 0;
+  size_t i = 0;
   while (ISWHITE (s[i]))
     ++i;

@@ -263,11 +262,13 @@ split_3 (char *s, size_t s_len,
   algo_name_len = strlen (DIGEST_TYPE_STRING);
   if (strncmp (s + i, DIGEST_TYPE_STRING, algo_name_len) == 0)
     {
-      if (strncmp (s + i + algo_name_len, " (", 2) == 0)
+      if (s[i + algo_name_len] == ' ')
+        ++i;
+      if (s[i + algo_name_len] == '(')
         {
           *binary = 0;
-          return bsd_split_3 (s +      i + algo_name_len + 2,
-                              s_len - (i + algo_name_len + 2),
+          return bsd_split_3 (s +      i + algo_name_len + 1,
+                              s_len - (i + algo_name_len + 1),
                               hex_digest, file_name);
         }
     }
diff --git a/tests/misc/md5sum b/tests/misc/md5sum
index 2fb024d..30edd9e 100755
--- a/tests/misc/md5sum
+++ b/tests/misc/md5sum
@@ -67,6 +67,16 @@ my @Tests =
      ['check-bsd3', '--check', '--status',
                                 {IN=> {'f.md5' => "MD5 (f) = $degenerate\n"}},
                                 {AUX=> {f=> 'bar'}}, {EXIT=> 1}],
+     ['check-openssl', '--check', {IN=> {'f.sha1' => "SHA1(f)= 
$degenerate\n"}},
+                                {AUX=> {f=> ''}},
+                                {ERR=>"md5sum: f.sha1: no properly formatted "
+                                       . "MD5 checksum lines found\n"},
+                                {EXIT=> 1}],
+     ['check-openssl2', '--check', {IN=> {'f.md5' => "MD5(f)= $degenerate\n"}},
+                                {AUX=> {f=> ''}}, {OUT=>"f: OK\n"}],
+     ['check-openssl3', '--check', '--status',
+                                {IN=> {'f.md5' => "MD5(f)= $degenerate\n"}},
+                                {AUX=> {f=> 'bar'}}, {EXIT=> 1}],
      ['bsd-segv', '--check', {IN=> {'z' => "MD5 ("}}, {EXIT=> 1},
       {ERR=> "$prog: z: no properly formatted MD5 checksum lines found\n"}],

diff --git a/tests/misc/sha1sum b/tests/misc/sha1sum
index 3f09aba..d084204 100755
--- a/tests/misc/sha1sum
+++ b/tests/misc/sha1sum
@@ -60,6 +60,17 @@ my @Tests =
      ['check-bsd3', '--check', '--status',
                         {IN=> {'f.sha1' => "SHA1 (f) = $sha_degenerate\n"}},
                         {AUX=> {f=> 'bar'}}, {EXIT=> 1}],
+     ['check-openssl', '--check', {IN=> {'f.md5' => "MD5(f)= 
$sha_degenerate\n"}},
+                        {AUX=> {f=> ''}},
+                        {ERR=>"sha1sum: f.md5: no properly formatted "
+                          . "SHA1 checksum lines found\n"},
+                        {EXIT=> 1}],
+     ['check-openssl2', '--check',
+                        {IN=> {'f.sha1' => "SHA1(f)= $sha_degenerate\n"}},
+                        {AUX=> {f=> ''}}, {OUT=>"f: OK\n"}],
+     ['check-openssl3', '--check', '--status',
+                        {IN=> {'f.sha1' => "SHA1(f)= $sha_degenerate\n"}},
+                        {AUX=> {f=> 'bar'}}, {EXIT=> 1}],
      ['bsd-segv', '--check', {IN=> {'z' => "SHA1 ("}}, {EXIT=> 1},
       {ERR=> "$prog: z: no properly formatted SHA1 checksum lines found\n"}],
     );
--
1.6.5.rc2.204.g8ea19




reply via email to

[Prev in Thread] Current Thread [Next in Thread]