From 6b73e692c976bdfdc710741cd983a9b33c13b3e7 Mon Sep 17 00:00:00 2001 From: Javier Spagnoletti Date: Tue, 30 Apr 2019 14:12:39 -0300 Subject: [PATCH] Add more missing CURL_VERSION_* constants And also check for CURL_VERSION_* constants in the sync-constants.php script. Related to request #72189: Add missing `CURL_VERSION_*` constants. --- UPGRADING | 6 +++-- ext/curl/interface.c | 6 +++++ ext/curl/sync-constants.php | 15 +++++------ ext/curl/tests/bug72189.phpt | 49 ++++++++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 11 deletions(-) create mode 100644 ext/curl/tests/bug72189.phpt diff --git a/UPGRADING b/UPGRADING index 0e44c493ae..effc0665f5 100644 --- a/UPGRADING +++ b/UPGRADING @@ -622,9 +622,11 @@ Curl: . CURL_SSLVERSION_MAX_TLSv1_2 . CURL_SSLVERSION_MAX_TLSv1_3 . CURL_SSLVERSION_TLSv1_3 + . CURL_VERSION_ALTSVC . CURL_VERSION_ASYNCHDNS . CURL_VERSION_BROTLI . CURL_VERSION_CONV + . CURL_VERSION_CURLDEBUG . CURL_VERSION_DEBUG . CURL_VERSION_GSSAPI . CURL_VERSION_GSSNEGOTIATE @@ -634,6 +636,7 @@ Curl: . CURL_VERSION_MULTI_SSL . CURL_VERSION_NTLM . CURL_VERSION_NTLM_WB + . CURL_VERSION_PSL . CURL_VERSION_SPNEGO . CURL_VERSION_SSPI . CURL_VERSION_TLSAUTH_SRP @@ -729,7 +732,7 @@ LDAP: - mbstring.regex_stack_limit . New INI directive (since 7.3.6) limiting stack depth of mbstring/oniguruma - regular expressions. + regular expressions. ======================================== 12. Windows Support @@ -748,4 +751,3 @@ LDAP: . The cyclic GC has been enhanced, which may result in considerable performance improvements. - \ No newline at end of file diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 11b6127051..bb038dc4cf 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -1130,6 +1130,7 @@ PHP_MINIT_FUNCTION(curl) #endif #if LIBCURL_VERSION_NUM >= 0x071306 /* Available since 7.19.6 */ + REGISTER_CURL_CONSTANT(CURL_VERSION_CURLDEBUG); REGISTER_CURL_CONSTANT(CURLOPT_SSH_KNOWNHOSTS); #endif @@ -1334,6 +1335,7 @@ PHP_MINIT_FUNCTION(curl) #if LIBCURL_VERSION_NUM >= 0x072f00 /* Available since 7.47.0 */ REGISTER_CURL_CONSTANT(CURL_HTTP_VERSION_2TLS); + REGISTER_CURL_CONSTANT(CURL_VERSION_PSL); #endif #if LIBCURL_VERSION_NUM >= 0x073000 /* Available since 7.48.0 */ @@ -1452,6 +1454,10 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLOPT_TLS13_CIPHERS); #endif +#if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */ + REGISTER_CURL_CONSTANT(CURL_VERSION_ALTSVC); +#endif + REGISTER_CURL_CONSTANT(CURLOPT_SAFE_UPLOAD); #ifdef PHP_CURL_NEED_OPENSSL_TSL diff --git a/ext/curl/sync-constants.php b/ext/curl/sync-constants.php index 093483ed9c..f8f7ba4c24 100644 --- a/ext/curl/sync-constants.php +++ b/ext/curl/sync-constants.php @@ -17,6 +17,8 @@ const IGNORED_CONSTANTS = [ 'CURLOPT_PROGRESSDATA' ]; +const CONSTANTS_REGEX_PATTERN = '~^CURL(?:OPT|_VERSION)_[A-Z0-9_]+$~'; + $curlConstants = getCurlConstants(); $sourceConstants = getSourceConstants(); @@ -157,13 +159,8 @@ function getCurlConstants() : array $deprecated = $match[3] ?? null; $removed = $match[4] ?? null; - if (strpos($name, 'CURLOPT_') !== 0) { - // not a CURLOPT_* constant - continue; - } - - if (in_array($name, IGNORED_CONSTANTS)) { - // purposefully ignored constant + if (in_array($name, IGNORED_CONSTANTS, true) || !preg_match(CONSTANTS_REGEX_PATTERN, $name)) { + // not a wanted constant continue; } @@ -197,8 +194,8 @@ function getSourceConstants() : array continue; } - if (strpos($name, 'CURLOPT_') !== 0) { - // not a CURLOPT_* constant + if (!preg_match(CONSTANTS_REGEX_PATTERN, $name)) { + // not a wanted constant continue; } diff --git a/ext/curl/tests/bug72189.phpt b/ext/curl/tests/bug72189.phpt new file mode 100644 index 0000000000..6723c2aae6 --- /dev/null +++ b/ext/curl/tests/bug72189.phpt @@ -0,0 +1,49 @@ +--TEST-- +Request #72189 (Add missing CURL_VERSION_* constants) +--SKIPIF-- += 7.19.6'); +} + +?> +--FILE-- + 0); + +?> +--EXPECT-- +bool(true) -- 2.40.0