aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'userprefs.cgi')
-rwxr-xr-xuserprefs.cgi10
1 files changed, 8 insertions, 2 deletions
diff --git a/userprefs.cgi b/userprefs.cgi
index 3ccfe820a..24a6a5699 100755
--- a/userprefs.cgi
+++ b/userprefs.cgi
@@ -90,8 +90,14 @@ sub SaveAccount {
undef, $user->id);
$oldcryptedpwd || ThrowCodeError("unable_to_retrieve_password");
- if (crypt(scalar($cgi->param('Bugzilla_password')), $oldcryptedpwd) ne
- $oldcryptedpwd)
+ my $oldpassword = $cgi->param('Bugzilla_password');
+
+ # 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");
}