]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Fix encrypted password comparision.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 24 Apr 2015 14:58:12 +0000 (15:58 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 24 Apr 2015 14:58:12 +0000 (15:58 +0100)
src/controller.c

index c7a6d4055d4da0940b9bdb76e47ef08db7e4bf9b..c207e6615dfe741fa360ff1dc7e81d263955f5ff 100644 (file)
@@ -199,7 +199,10 @@ rspamd_is_encrypted_password (const gchar *password,
 
                        if ((endptr == NULL || *endptr == *end) && id == RSPAMD_PBKDF_ID_V1) {
                                ret = TRUE;
-                               *pbkdf = &pbkdf_list[0];
+
+                               if (pbkdf != NULL) {
+                                       *pbkdf = &pbkdf_list[0];
+                               }
                        }
                }
        }
@@ -261,7 +264,7 @@ static gboolean rspamd_check_encrypted_password (const gchar * password,
                        return FALSE;
                }
 
-               key_decoded = rspamd_decode_base32 (hash, 0, &key_len);
+               key_decoded = rspamd_decode_base32 (hash, key_len, &key_len);
 
                if (key_decoded == NULL || key_len != pbkdf->key_len) {
                        /* We have some unknown salt here */
@@ -271,7 +274,8 @@ static gboolean rspamd_check_encrypted_password (const gchar * password,
                }
 
                local_key = g_alloca (pbkdf->key_len);
-               rspamd_cryptobox_pbkdf (password, strlen (password), salt, salt_len,
+               rspamd_cryptobox_pbkdf (password, strlen (password),
+                               salt_decoded, salt_len,
                                local_key, pbkdf->key_len, pbkdf->rounds);
 
                if (!rspamd_constant_memcmp (key_decoded, local_key, pbkdf->key_len)) {