Hello,

i have a complex patch but the two simple thoughts were
1. char scrambled_passwd[32];
is wrong. make_scrambled_passwd returns octet2hex which is longer
according to mysql sources:
buf       OUT buffer of size 2*SHA1_HASH_SIZE + 2 to store hex string

2. the hash itself changed between MySQL versions

Here is the simple patch without my macros, debug and so on...
-- Dalibor Straka

--- mod_auth_mysql.c    2008-01-24 23:06:26.000000000 +0100
+++ /tmp/mod_auth_mysql.c       2008-01-24 23:07:52.000000000 +0100
@@ -230,9 +230,14 @@
 
 static int check_mysql_encryption(const char *passwd, char *enc_passwd)
 {
-       char scrambled_passwd[32];
+
+       char scrambled_passwd[2 * 0x20 + 2];
 
-       make_scrambled_password(scrambled_passwd, passwd);
+       if (strlen(enc_passwd) == 16)
+               make_scrambled_password_323(scrambled_passwd, passwd);
+       else
+               make_scrambled_password(scrambled_passwd, passwd);
+
        return (!strcmp(scrambled_passwd, enc_passwd));
 }
 



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to