if ((endptr == NULL || *endptr == *end) && id == RSPAMD_PBKDF_ID_V1) {
ret = TRUE;
- *pbkdf = &pbkdf_list[0];
+
+ if (pbkdf != NULL) {
+ *pbkdf = &pbkdf_list[0];
+ }
}
}
}
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 */
}
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)) {