]> granicus.if.org Git - php/commitdiff
Move overflow checks in openssl_pbkdf2
authorJakub Zelenka <bukka@php.net>
Wed, 19 Aug 2015 19:06:58 +0000 (20:06 +0100)
committerJakub Zelenka <bukka@php.net>
Wed, 19 Aug 2015 19:06:58 +0000 (20:06 +0100)
ext/openssl/openssl.c

index 2876bae76eca8c6fb89bcdb16aadcb99d874de78..938117e1e31baacb417208296c4955561e8f16c5 100644 (file)
@@ -4022,11 +4022,6 @@ PHP_FUNCTION(openssl_pbkdf2)
                RETURN_FALSE;
        }
 
-       PHP_OPENSSL_CHECK_OVERFLOW(key_length, key);
-       PHP_OPENSSL_CHECK_OVERFLOW(iterations, iterations);
-       PHP_OPENSSL_CHECK_OVERFLOW(password_len, password);
-       PHP_OPENSSL_CHECK_OVERFLOW(salt_len, salt);
-
        if (method_len) {
                digest = EVP_get_digestbyname(method);
        } else {
@@ -4038,6 +4033,11 @@ PHP_FUNCTION(openssl_pbkdf2)
                RETURN_FALSE;
        }
 
+       PHP_OPENSSL_CHECK_OVERFLOW(key_length, key);
+       PHP_OPENSSL_CHECK_OVERFLOW(iterations, iterations);
+       PHP_OPENSSL_CHECK_OVERFLOW(password_len, password);
+       PHP_OPENSSL_CHECK_OVERFLOW(salt_len, salt);
+
        out_buffer = zend_string_alloc(key_length, 0);
 
        if (PKCS5_PBKDF2_HMAC(password, (int)password_len, (unsigned char *)salt, (int)salt_len, (int)iterations, digest, (int)key_length, (unsigned char*)ZSTR_VAL(out_buffer)) == 1) {