Author: jim
Date: Tue Mar 17 11:58:59 2015
New Revision: 1667279

URL: http://svn.apache.org/r1667279
Log:
Use Digest:MD5 to avoid taints

Modified:
    steve/trunk/cmdline/steve.pm

Modified: steve/trunk/cmdline/steve.pm
URL: 
http://svn.apache.org/viewvc/steve/trunk/cmdline/steve.pm?rev=1667279&r1=1667278&r2=1667279&view=diff
==============================================================================
--- steve/trunk/cmdline/steve.pm (original)
+++ steve/trunk/cmdline/steve.pm Tue Mar 17 11:58:59 2015
@@ -22,6 +22,7 @@
 ##use strict;
 
 use Fcntl qw(:flock SEEK_END);
+use Digest::MD5;
 
 $ECHO     = '/bin/echo';
 $CAT      = '/bin/cat';
@@ -92,35 +93,25 @@ sub filestuff {
 }
 
 # ==========================================================================
+
 sub get_hash_of {
     local ($item) = @_;
-    local ($rv);
+    local $md5 = Digest::MD5->new;
 
-    if (-x $MD5) {
-        $rv = `$MD5 -q -s "$item"` || die "$pname: failed md5: $!\n";
-    }
-    else {
-        $rv = `$ECHO "$item" | $OPENSSL md5`
-              || die "$pname: failed openssl md5: $!\n";
-    }
-    chomp($rv);
-    return $rv;
+    $md5->add($item);
+    return $md5->hexdigest;
 }
 
 # ==========================================================================
+
 sub hash_file {
     local ($filename) = @_;
-    local ($rv);
 
-    if (-x $MD5) {
-        $rv = `$MD5 -q "$filename"` || die "$pname: failed md5: $!\n";
-    }
-    else {
-        $rv = `$CAT "$filename" | $OPENSSL md5`
-              || die "$pname: failed openssl md5: $!\n";
-    }
-    chomp($rv);
-    return $rv;
+    open(INFILE, $filename) || die "$pname: cannot open $filename: $!\n";
+    local $/;   # Set input to "slurp" mode.
+    local $item = <INFILE>;
+    close(INFILE);
+    return get_hash_of($item);
 }
 
 # ==========================================================================


Reply via email to