From: Máté Kocsis Date: Wed, 18 Dec 2019 19:44:53 +0000 (+0100) Subject: Fix F1 type information in OPCache X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f52f471a5e65ecbc6a81a8c417be9c1fd12b600e;p=php Fix F1 type information in OPCache Closes GH-5025 --- diff --git a/ext/opcache/Optimizer/zend_func_info.c b/ext/opcache/Optimizer/zend_func_info.c index 5509741d0b..b6a335d843 100644 --- a/ext/opcache/Optimizer/zend_func_info.c +++ b/ext/opcache/Optimizer/zend_func_info.c @@ -106,7 +106,7 @@ static const func_info_t func_infos[] = { F1("get_declared_classes", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), F1("get_declared_interfaces", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), F1("get_defined_functions", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ARRAY), - F1("get_defined_vars", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF), + F1("get_defined_vars", MAY_BE_NULL | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF), F1("get_resource_type", MAY_BE_STRING), F1("get_defined_constants", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_FALSE | MAY_BE_ARRAY_OF_TRUE | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_DOUBLE | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_RESOURCE | MAY_BE_ARRAY_OF_ARRAY), F1("debug_backtrace", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_ARRAY), @@ -196,11 +196,11 @@ static const func_info_t func_infos[] = { F1("str_getcsv", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_STRING), FN("str_pad", MAY_BE_STRING), F1("strchr", MAY_BE_FALSE | MAY_BE_STRING), - F1("sprintf", MAY_BE_FALSE | MAY_BE_STRING), - F1("vsprintf", MAY_BE_FALSE | MAY_BE_STRING), + F1("sprintf", MAY_BE_STRING), + F1("vsprintf", MAY_BE_STRING), F1("sscanf", MAY_BE_NULL | MAY_BE_LONG | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_ANY), F1("fscanf", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_ANY), - F1("parse_url", MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_LONG), + F1("parse_url", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_LONG), F1("urlencode", MAY_BE_STRING), F1("urldecode", MAY_BE_STRING), F1("rawurlencode", MAY_BE_STRING), @@ -228,7 +228,7 @@ static const func_info_t func_infos[] = { #endif F1("base64_decode", MAY_BE_FALSE | MAY_BE_STRING), F1("base64_encode", MAY_BE_STRING), - F1("password_hash", MAY_BE_NULL | MAY_BE_STRING), + F1("password_hash", MAY_BE_STRING), F1("password_get_info", MAY_BE_NULL | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY), F1("convert_uuencode", MAY_BE_FALSE | MAY_BE_STRING), F1("convert_uudecode", MAY_BE_FALSE | MAY_BE_STRING), @@ -273,14 +273,14 @@ static const func_info_t func_infos[] = { FN("call_user_method_array", UNKNOWN_INFO), FN("forward_static_call", UNKNOWN_INFO), FN("forward_static_call_array", UNKNOWN_INFO), - F1("serialize", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), + F1("serialize", MAY_BE_STRING), FN("unserialize", UNKNOWN_INFO), F1("var_export", MAY_BE_NULL | MAY_BE_STRING), F1("print_r", MAY_BE_TRUE | MAY_BE_STRING), F0("register_shutdown_function", MAY_BE_NULL | MAY_BE_FALSE), - F1("highlight_file", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING), - F1("show_source", MAY_BE_FALSE | MAY_BE_STRING), - F1("highlight_string", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING), + F1("highlight_file", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING), + F1("show_source", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), + F1("highlight_string", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING), F1("php_strip_whitespace", MAY_BE_STRING), FN("ini_get", MAY_BE_FALSE | MAY_BE_STRING), F1("ini_get_all", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY), @@ -317,7 +317,7 @@ static const func_info_t func_infos[] = { F1("tmpfile", MAY_BE_FALSE | MAY_BE_RESOURCE), F1("file", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), F1("file_get_contents", MAY_BE_FALSE | MAY_BE_STRING), - F1("stream_context_create", MAY_BE_FALSE | MAY_BE_RESOURCE), + F1("stream_context_create", MAY_BE_RESOURCE), F0("stream_context_set_params", MAY_BE_FALSE | MAY_BE_TRUE), F1("stream_context_get_params", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY), FN("stream_context_get_options", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY), @@ -444,8 +444,6 @@ static const func_info_t func_infos[] = { F1("str_rot13", MAY_BE_STRING), F1("stream_get_filters", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), F1("stream_bucket_make_writeable", MAY_BE_NULL | MAY_BE_OBJECT), - F1("stream_bucket_prepend", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("stream_bucket_append", MAY_BE_FALSE | MAY_BE_OBJECT), F1("stream_bucket_new", MAY_BE_FALSE | MAY_BE_OBJECT), F1("sys_get_temp_dir", MAY_BE_STRING), @@ -599,8 +597,8 @@ static const func_info_t func_infos[] = { F0("mysqli_warning_count", MAY_BE_NULL | MAY_BE_LONG), /* ext/curl */ - F1("curl_init", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_RESOURCE), - F1("curl_copy_handle", MAY_BE_NULL | MAY_BE_RESOURCE), + F1("curl_init", MAY_BE_FALSE | MAY_BE_RESOURCE), + F1("curl_copy_handle", MAY_BE_FALSE | MAY_BE_RESOURCE), F1("curl_version", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY), FN("curl_exec", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING), F1("curl_getinfo", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING | MAY_BE_LONG | MAY_BE_DOUBLE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY), @@ -621,7 +619,7 @@ static const func_info_t func_infos[] = { F1("mb_strtolower", MAY_BE_FALSE | MAY_BE_STRING), F1("mb_language", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING), F1("mb_internal_encoding", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING), - F1("mb_http_input", MAY_BE_FALSE | MAY_BE_STRING), + F1("mb_http_input", MAY_BE_FALSE | MAY_BE_STRING| MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), F1("mb_http_output", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING), F1("mb_detect_order", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), F1("mb_substitute_character", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_LONG | MAY_BE_STRING), @@ -708,41 +706,41 @@ static const func_info_t func_infos[] = { F1("hash_pbkdf2", MAY_BE_STRING), F1("mhash_keygen_s2k", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), F1("mhash_get_hash_name", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), - F1("mhash", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), + F1("mhash", MAY_BE_FALSE | MAY_BE_FALSE | MAY_BE_STRING), /* ext/sodium */ - F1("sodium_crypto_shorthash", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_secretbox", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_secretbox_open", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), - F1("sodium_crypto_generichash", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_generichash_init", MAY_BE_NULL | MAY_BE_STRING), + F1("sodium_crypto_shorthash", MAY_BE_STRING), + F1("sodium_crypto_secretbox", MAY_BE_STRING), + F1("sodium_crypto_secretbox_open", MAY_BE_FALSE | MAY_BE_STRING), + F1("sodium_crypto_generichash", MAY_BE_STRING), + F1("sodium_crypto_generichash_init", MAY_BE_STRING), F0("sodium_crypto_generichash_update", MAY_BE_TRUE), - F1("sodium_crypto_generichash_final", MAY_BE_NULL | MAY_BE_STRING), + F1("sodium_crypto_generichash_final", MAY_BE_STRING), F1("sodium_crypto_box_keypair", MAY_BE_STRING), - F1("sodium_crypto_box_seed_keypair", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_box_secretkey", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_box_publickey", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_box", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_box_open", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), - F1("sodium_crypto_box_seal", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_box_seal_open", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), + F1("sodium_crypto_box_seed_keypair", MAY_BE_STRING), + F1("sodium_crypto_box_secretkey", MAY_BE_STRING), + F1("sodium_crypto_box_publickey", MAY_BE_STRING), + F1("sodium_crypto_box", MAY_BE_STRING), + F1("sodium_crypto_box_open", MAY_BE_FALSE | MAY_BE_STRING), + F1("sodium_crypto_box_seal", MAY_BE_STRING), + F1("sodium_crypto_box_seal_open", MAY_BE_FALSE | MAY_BE_STRING), F1("sodium_crypto_sign_keypair", MAY_BE_STRING), - F1("sodium_crypto_sign_seed_keypair", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_sign_secretkey", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_sign_publickey", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_sign", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_sign_open", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), - F1("sodium_crypto_sign_detached", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_stream", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_stream_xor", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_pwhash", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_pwhash_str", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_aead_aes256gcm_encrypt", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_aead_aes256gcm_decrypt", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), - F1("sodium_bin2hex", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_hex2bin", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_scalarmult", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_kx_seed_keypair", MAY_BE_NULL | MAY_BE_STRING), + F1("sodium_crypto_sign_seed_keypair", MAY_BE_STRING), + F1("sodium_crypto_sign_secretkey", MAY_BE_STRING), + F1("sodium_crypto_sign_publickey", MAY_BE_STRING), + F1("sodium_crypto_sign", MAY_BE_STRING), + F1("sodium_crypto_sign_open", MAY_BE_FALSE | MAY_BE_STRING), + F1("sodium_crypto_sign_detached", MAY_BE_STRING), + F1("sodium_crypto_stream", MAY_BE_STRING), + F1("sodium_crypto_stream_xor", MAY_BE_STRING), + F1("sodium_crypto_pwhash", MAY_BE_STRING), + F1("sodium_crypto_pwhash_str", MAY_BE_STRING), + F1("sodium_crypto_aead_aes256gcm_encrypt", MAY_BE_STRING), + F1("sodium_crypto_aead_aes256gcm_decrypt", MAY_BE_FALSE | MAY_BE_STRING), + F1("sodium_bin2hex", MAY_BE_STRING), + F1("sodium_hex2bin", MAY_BE_STRING), + F1("sodium_crypto_scalarmult", MAY_BE_STRING), + F1("sodium_crypto_kx_seed_keypair", MAY_BE_STRING), F1("sodium_crypto_kx_keypair", MAY_BE_STRING), F1("sodium_crypto_kx_secretkey", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_kx_publickey", MAY_BE_NULL | MAY_BE_STRING), @@ -756,23 +754,23 @@ static const func_info_t func_infos[] = { F1("sodium_crypto_secretbox_keygen", MAY_BE_STRING), F1("sodium_crypto_shorthash_keygen", MAY_BE_STRING), F1("sodium_crypto_stream_keygen", MAY_BE_STRING), - F1("sodium_crypto_kdf_derive_from_key", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_pad", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_unpad", MAY_BE_NULL | MAY_BE_STRING), + F1("sodium_crypto_kdf_derive_from_key", MAY_BE_STRING), + F1("sodium_pad", MAY_BE_STRING), + F1("sodium_unpad", MAY_BE_STRING), - F1("sodium_crypto_box_keypair_from_secretkey_and_publickey", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_box_publickey_from_secretkey", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_sign_keypair_from_secretkey_and_publickey", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_sign_publickey_from_secretkey", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_pwhash_scryptsalsa208sha256", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_pwhash_scryptsalsa208sha256_str", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_sign_ed25519_sk_to_curve25519", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_sign_ed25519_pk_to_curve25519", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_aead_chacha20poly1305_encrypt", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_aead_chacha20poly1305_decrypt", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), - F1("sodium_crypto_aead_chacha20poly1305_ietf_encrypt", MAY_BE_NULL | MAY_BE_STRING), - F1("sodium_crypto_aead_chacha20poly1305_ietf_decrypt", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), - F1("sodium_crypto_aead_xchacha20poly1305_ietf_encrypt", MAY_BE_NULL | MAY_BE_STRING), + F1("sodium_crypto_box_keypair_from_secretkey_and_publickey", MAY_BE_STRING), + F1("sodium_crypto_box_publickey_from_secretkey", MAY_BE_STRING), + F1("sodium_crypto_sign_keypair_from_secretkey_and_publickey", MAY_BE_STRING), + F1("sodium_crypto_sign_publickey_from_secretkey", MAY_BE_STRING), + F1("sodium_crypto_pwhash_scryptsalsa208sha256", MAY_BE_STRING), + F1("sodium_crypto_pwhash_scryptsalsa208sha256_str", MAY_BE_STRING), + F1("sodium_crypto_sign_ed25519_sk_to_curve25519", MAY_BE_STRING), + F1("sodium_crypto_sign_ed25519_pk_to_curve25519", MAY_BE_STRING), + F1("sodium_crypto_aead_chacha20poly1305_encrypt", MAY_BE_STRING), + F1("sodium_crypto_aead_chacha20poly1305_decrypt", MAY_BE_FALSE | MAY_BE_STRING), + F1("sodium_crypto_aead_chacha20poly1305_ietf_encrypt", MAY_BE_STRING), + F1("sodium_crypto_aead_chacha20poly1305_ietf_decrypt", MAY_BE_FALSE | MAY_BE_STRING), + F1("sodium_crypto_aead_xchacha20poly1305_ietf_encrypt", MAY_BE_STRING), F1("sodium_crypto_aead_xchacha20poly1305_ietf_decrypt", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), F1("sodium_crypto_aead_chacha20poly1305_keygen", MAY_BE_STRING), F1("sodium_crypto_aead_chacha20poly1305_ietf_keygen", MAY_BE_STRING), @@ -957,16 +955,16 @@ static const func_info_t func_infos[] = { F1("imagecolorsforindex", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_LONG), F1("imagegetclip", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG), F1("imageftbbox", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG), - F1("imagefttext", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG), - F1("imagettfbbox", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG), - F1("imagettftext", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG), + F1("imagefttext", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG), + F1("imagettfbbox", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG), + F1("imagettftext", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG), F1("imagecrop", MAY_BE_FALSE | MAY_BE_OBJECT), F1("imagecropauto", MAY_BE_FALSE | MAY_BE_OBJECT), F1("imagescale", MAY_BE_FALSE | MAY_BE_OBJECT), F1("imageaffine", MAY_BE_FALSE | MAY_BE_OBJECT), F1("imageaffinematrixget", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_DOUBLE), F1("imageaffinematrixconcat", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_DOUBLE), - F1("imageresolution", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG), + F1("imageresolution", MAY_BE_TRUE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG), /* ext/spl */ F1("class_implements", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_STRING),