Commit ac1f49a8 authored by dkl%redhat.com's avatar dkl%redhat.com

Bug 453767 - Passwords containing wide characters causes system error

Patch by David Lawrence <dkl@redhat.com> - a/r=mkanat
parent 8e770628
...@@ -53,6 +53,11 @@ sub check_credentials { ...@@ -53,6 +53,11 @@ sub check_credentials {
"SELECT cryptpassword FROM profiles WHERE userid = ?", "SELECT cryptpassword FROM profiles WHERE userid = ?",
undef, $user_id); undef, $user_id);
# Wide characters cause crypt to die
if (Bugzilla->params->{'utf8'}) {
utf8::encode($password) if utf8::is_utf8($password);
}
# Using the internal crypted password as the salt, # Using the internal crypted password as the salt,
# crypt the password the user entered. # crypt the password the user entered.
my $entered_password_crypted = crypt($password, $real_password_crypted); my $entered_password_crypted = crypt($password, $real_password_crypted);
......
...@@ -480,6 +480,11 @@ sub bz_crypt { ...@@ -480,6 +480,11 @@ sub bz_crypt {
$salt .= $saltchars[rand(64)]; $salt .= $saltchars[rand(64)];
} }
# Wide characters cause crypt to die
if (Bugzilla->params->{'utf8'}) {
utf8::encode($password) if utf8::is_utf8($password);
}
# Crypt the password. # Crypt the password.
my $cryptedpassword = crypt($password, $salt); my $cryptedpassword = crypt($password, $salt);
......
...@@ -90,8 +90,14 @@ sub SaveAccount { ...@@ -90,8 +90,14 @@ sub SaveAccount {
undef, $user->id); undef, $user->id);
$oldcryptedpwd || ThrowCodeError("unable_to_retrieve_password"); $oldcryptedpwd || ThrowCodeError("unable_to_retrieve_password");
if (crypt(scalar($cgi->param('Bugzilla_password')), $oldcryptedpwd) ne my $oldpassword = $cgi->param('Bugzilla_password');
$oldcryptedpwd)
# Wide characters cause crypt to die
if (Bugzilla->params->{'utf8'}) {
utf8::encode($oldpassword) if utf8::is_utf8($oldpassword);
}
if (crypt($oldpassword, $oldcryptedpwd) ne $oldcryptedpwd)
{ {
ThrowUserError("old_password_incorrect"); ThrowUserError("old_password_incorrect");
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment