Fix a memory leak on openssl_decrypt()

This commit is contained in:
Henrique do Nascimento Angelo 2008-06-28 09:24:18 +00:00
parent 9c812109d4
commit d44509418e

View file

@ -4691,10 +4691,9 @@ PHP_FUNCTION(openssl_decrypt)
return; return;
} }
if (!raw_input) { if (!method_len) {
base64_str = (char*)php_base64_decode((unsigned char*)data, data_len, &base64_str_len); php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown cipher algorithm");
data_len = base64_str_len; RETURN_FALSE;
data = base64_str;
} }
cipher_type = EVP_get_cipherbyname(method); cipher_type = EVP_get_cipherbyname(method);
@ -4703,6 +4702,12 @@ PHP_FUNCTION(openssl_decrypt)
RETURN_FALSE; RETURN_FALSE;
} }
if (!raw_input) {
base64_str = (char*)php_base64_decode((unsigned char*)data, data_len, &base64_str_len);
data_len = base64_str_len;
data = base64_str;
}
keylen = EVP_CIPHER_key_length(cipher_type); keylen = EVP_CIPHER_key_length(cipher_type);
if (keylen > password_len) { if (keylen > password_len) {
key = emalloc(keylen); key = emalloc(keylen);