]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Stop ever using perl's crypt() function; only use mysql's. (Using
authorterry%mozilla.org <>
Tue, 18 Jan 2000 22:40:18 +0000 (22:40 +0000)
committerterry%mozilla.org <>
Tue, 18 Jan 2000 22:40:18 +0000 (22:40 +0000)
both was causing corruption on about 1 in 40 passwords.)

CGI.pl
changepassword.cgi
editusers.cgi

diff --git a/CGI.pl b/CGI.pl
index 41667dd2cb4bd01ebad4b8a68ca80da50bb5eff8..5f7a21f882bf2a32340c41ebb3b5e95df9828713 100644 (file)
--- a/CGI.pl
+++ b/CGI.pl
@@ -604,7 +604,10 @@ sub confirm_login {
             exit;
         }
 
-       my $enteredcryptpwd = crypt($enteredpwd, substr($realcryptpwd, 0, 2));
+        SendSQL("SELECT encrypt(" . SqlQuote($enteredpwd) . ", " .
+                SqlQuote(substr($realcryptpwd, 0, 2)) . ")");
+        my $enteredcryptpwd = FetchOneColumn();
+
         if ($realcryptpwd eq "" || $enteredcryptpwd ne $realcryptpwd) {
             print "Content-type: text/html\n\n";
            PutHeader("Login failed");
index d62259ac5f7de94c52300cd744f21473543a1484..93b736e55b67a7aa0161729de418dd964f03d2c4 100755 (executable)
@@ -102,11 +102,6 @@ The two passwords you entered did not match.  Please click <b>Back</b> and try a
 my $pwd = $::FORM{'pwd1'};
 
 
-sub x {
-    my $sc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./";
-    return substr($sc, int (rand () * 100000) % (length ($sc) + 1), 1);
-}
-
 if ($pwd ne "") {
     if ($pwd !~ /^[a-zA-Z0-9-_]*$/ || length($pwd) < 3 || length($pwd) > 15) {
         print "<H1>Sorry; we're picky.</H1>
@@ -119,14 +114,13 @@ Please click <b>Back</b> and try again.\n";
     }
     
     
-# Generate a random salt.
-    
-    my $salt  = x() . x();
-    
-    my $encrypted = crypt($pwd, $salt);
-    
-    SendSQL("update profiles set password='$pwd',cryptpassword='$encrypted' where login_name=" .
+    my $qpwd = SqlQuote($pwd);
+    SendSQL("UPDATE profiles SET password=$qpwd,cryptpassword=encrypt($qpwd) 
+             WHERE login_name = " .
+            SqlQuote($::COOKIE{'Bugzilla_login'}));
+    SendSQL("SELECT cryptpassword FROM profiles WHERE login_name = " .
             SqlQuote($::COOKIE{'Bugzilla_login'}));
+    my $encrypted = FetchOneColumn();
     
     SendSQL("update logincookies set cryptpassword = '$encrypted' where cookie = $::COOKIE{'Bugzilla_logincookie'}");
 }
index ccb108e79280f0b8ee013c7f11bea028e7baf5f0..5b5d7e526feb6f9e622f64dc34572549ce60cc95 100755 (executable)
@@ -277,21 +277,13 @@ if ($action eq 'new') {
     }
     
 
-    sub x {
-       my $sc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./";
-       return substr($sc, int (rand () * 100000) % (length ($sc) + 1), 1);
-    }
-
-    my $salt = x() . x();
-    my $cryptpassword = crypt($password, $salt);
-
     # Add the new user
     SendSQL("INSERT INTO profiles ( " .
           "login_name, password, cryptpassword, realname, groupset" .
           " ) VALUES ( " .
           SqlQuote($user) . "," .
           SqlQuote($password) . "," .
-          SqlQuote($cryptpassword) . "," .
+          "encrypt(" . SqlQuote($password) . ")," .
           SqlQuote($realname) . "," .
           $bits . ")" );