]> granicus.if.org Git - php/commitdiff
sodium ext: long -> zend_long
authorFrank Denis <github@pureftpd.org>
Tue, 8 Aug 2017 15:36:06 +0000 (17:36 +0200)
committerFrank Denis <github@pureftpd.org>
Tue, 8 Aug 2017 15:36:06 +0000 (17:36 +0200)
ext/sodium/libsodium.c

index 48902744a5bf6407c968497f41fdfb2e8902da2f..48b2a9ca3ba22aa96ca8b890dc5730451df47e4f 100644 (file)
@@ -2990,8 +2990,8 @@ PHP_FUNCTION(sodium_crypto_kdf_derive_from_key)
        char          *ctx;
        char          *key;
        zend_string   *subkey;
-       long           subkey_id;
-       long           subkey_len;
+       zend_long      subkey_id;
+       zend_long      subkey_len;
        size_t         ctx_len;
        size_t         key_len;
 
@@ -3006,7 +3006,7 @@ PHP_FUNCTION(sodium_crypto_kdf_derive_from_key)
                zend_throw_exception(sodium_exception_ce, "subkey cannot be smaller than sodium_crypto_kdf_BYTES_MIN", 0);
                return;
        }
-       if (subkey_len > crypto_kdf_BYTES_MAX) {
+       if (subkey_len > crypto_kdf_BYTES_MAX || subkey_len > SIZE_MAX) {
                zend_throw_exception(sodium_exception_ce, "subkey cannot be larger than sodium_crypto_kdf_BYTES_MAX", 0);
                return;
        }
@@ -3033,7 +3033,7 @@ PHP_FUNCTION(sodium_crypto_kdf_derive_from_key)
        salt[6] = (unsigned char) (((uint64_t) subkey_id) >> 48);
        salt[7] = (unsigned char) (((uint64_t) subkey_id) >> 56);
        memset(salt + 8, 0, (sizeof salt) - 8);
-       subkey = zend_string_alloc(subkey_len, 0);
+       subkey = zend_string_alloc((size_t) subkey_len, 0);
        if (crypto_generichash_blake2b_salt_personal((unsigned char *) ZSTR_VAL(subkey),
                                                                                                 (size_t) subkey_len,
                                                                                                 NULL, 0,