From 2b3dace8fbefcc467b47f34b4863ededab4c8f10 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sat, 16 Nov 2019 15:14:18 +0100 Subject: [PATCH 1/6] Bump required libcurl version to 7.17.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit libcurl 7.17.1 has been released 12 years ago, so it doesn't seem reasonable to still cater to older versions. The main reason for this version bump is to cater to a mass renaming of `CURLE_*` constants in 7.17.0 (and a single further renaming in 7.17.1), whereby many of the old constants have been marked obsolete, and according to curl.h have been scheduled for removal in 2009 already. So we remove all respective PHP `CURLE_*` constants, and add not yet available replacements, except for those constants which have been marked as being obsolete (`CURLE_OBSOLETE*`), since these error codes are not supposed to be returned ever. Renamed constants: * `CURLE_FTP_ACCESS_DENIED` → `CURLE_REMOTE_ACCESS_DENIED` * `CURLE_FTP_BAD_DOWNLOAD_RESUME` → `CURLE_BAD_DOWNLOAD_RESUME` * `CURLE_FTP_COULDNT_SET_BINARY` → `CURLE_FTP_COULDNT_SET_TYPE` * `CURLE_FTP_COULDNT_STOR_FILE` → `CURLE_UPLOAD_FAILED` * `CURLE_FTP_PARTIAL_FILE` → `CURLE_PARTIAL_FILE` * `CURLE_FTP_QUOTE_ERROR` → `CURLE_QUOTE_ERROR` * `CURLE_HTTP_NOT_FOUND` → `CURLE_HTTP_RETURNED_ERROR` * `CURLE_HTTP_PORT_FAILED` → `CURLE_INTERFACE_FAILED` * `CURLE_HTTP_RANGE_ERROR` → `CURLE_RANGE_ERROR` * `CURLE_OPERATION_TIMEOUTED` → `CURLE_OPERATION_TIMEDOUT` * `CURLE_SSL_PEER_CERTIFICATE` → `CURLE_PEER_FAILED_VERIFICATION` * `CURLE_URL_MALFORMAT_USER` → `CURLE_NOT_BUILT_IN` * `CURLE_FTP_SSL_FAILED` → `CURLE_USE_SSL_FAILED` Removed constants: * `CURLE_BAD_CALLING_ORDER` * `CURLE_BAD_PASSWORD_ENTERED` * `CURLE_FTP_CANT_RECONNECT` * `CURLE_FTP_COULDNT_GET_SIZE` * `CURLE_FTP_COULDNT_SET_ASCII` * `CURLE_FTP_USER_PASSWORD_INCORRECT` * `CURLE_FTP_WEIRD_USER_REPLY` * `CURLE_FTP_WRITE_ERROR` * `CURLE_LIBRARY_NOT_FOUND` * `CURLE_OBSOLETE` * `CURLE_SHARE_IN_USE` * `CURLE_MALFORMAT_USER` --- ext/curl/config.m4 | 2 +- ext/curl/interface.c | 97 ++++++++------------------------------------ ext/curl/multi.c | 4 -- 3 files changed, 18 insertions(+), 85 deletions(-) diff --git a/ext/curl/config.m4 b/ext/curl/config.m4 index 6e8d36b8a28cb..436c37974d33c 100644 --- a/ext/curl/config.m4 +++ b/ext/curl/config.m4 @@ -4,7 +4,7 @@ PHP_ARG_WITH([curl], [Include cURL support])]) if test "$PHP_CURL" != "no"; then - PKG_CHECK_MODULES([CURL], [libcurl >= 7.15.5]) + PKG_CHECK_MODULES([CURL], [libcurl >= 7.17.1]) PKG_CHECK_VAR([CURL_FEATURES], [libcurl], [supported_features]) PHP_EVAL_LIBLINE($CURL_LIBS, CURL_SHARED_LIBADD) diff --git a/ext/curl/interface.c b/ext/curl/interface.c index abb4a8a688b39..f288937c41ac5 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -118,20 +118,16 @@ static int php_curl_option_str(php_curl *ch, zend_long option, const char *str, return FAILURE; } -#if LIBCURL_VERSION_NUM >= 0x071100 if (make_copy) { -#endif char *copystr; /* Strings passed to libcurl as 'char *' arguments, are copied by the library since 7.17.0 */ copystr = estrndup(str, len); error = curl_easy_setopt(ch->cp, option, copystr); zend_llist_add_element(&ch->to_free->str, ©str); -#if LIBCURL_VERSION_NUM >= 0x071100 } else { error = curl_easy_setopt(ch->cp, option, str); } -#endif SAVE_CURL_ERROR(ch, error); @@ -544,64 +540,41 @@ PHP_MINIT_FUNCTION(curl) /* */ REGISTER_CURL_CONSTANT(CURLE_ABORTED_BY_CALLBACK); - REGISTER_CURL_CONSTANT(CURLE_BAD_CALLING_ORDER); REGISTER_CURL_CONSTANT(CURLE_BAD_CONTENT_ENCODING); REGISTER_CURL_CONSTANT(CURLE_BAD_DOWNLOAD_RESUME); REGISTER_CURL_CONSTANT(CURLE_BAD_FUNCTION_ARGUMENT); - REGISTER_CURL_CONSTANT(CURLE_BAD_PASSWORD_ENTERED); REGISTER_CURL_CONSTANT(CURLE_COULDNT_CONNECT); REGISTER_CURL_CONSTANT(CURLE_COULDNT_RESOLVE_HOST); REGISTER_CURL_CONSTANT(CURLE_COULDNT_RESOLVE_PROXY); REGISTER_CURL_CONSTANT(CURLE_FAILED_INIT); REGISTER_CURL_CONSTANT(CURLE_FILE_COULDNT_READ_FILE); - REGISTER_CURL_CONSTANT(CURLE_FTP_ACCESS_DENIED); - REGISTER_CURL_CONSTANT(CURLE_FTP_BAD_DOWNLOAD_RESUME); REGISTER_CURL_CONSTANT(CURLE_FTP_CANT_GET_HOST); - REGISTER_CURL_CONSTANT(CURLE_FTP_CANT_RECONNECT); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_GET_SIZE); REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_RETR_FILE); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_SET_ASCII); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_SET_BINARY); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_STOR_FILE); REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_USE_REST); - REGISTER_CURL_CONSTANT(CURLE_FTP_PARTIAL_FILE); REGISTER_CURL_CONSTANT(CURLE_FTP_PORT_FAILED); - REGISTER_CURL_CONSTANT(CURLE_FTP_QUOTE_ERROR); - REGISTER_CURL_CONSTANT(CURLE_FTP_USER_PASSWORD_INCORRECT); REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_227_FORMAT); REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_PASS_REPLY); REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_PASV_REPLY); REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_SERVER_REPLY); - REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_USER_REPLY); - REGISTER_CURL_CONSTANT(CURLE_FTP_WRITE_ERROR); REGISTER_CURL_CONSTANT(CURLE_FUNCTION_NOT_FOUND); REGISTER_CURL_CONSTANT(CURLE_GOT_NOTHING); - REGISTER_CURL_CONSTANT(CURLE_HTTP_NOT_FOUND); - REGISTER_CURL_CONSTANT(CURLE_HTTP_PORT_FAILED); REGISTER_CURL_CONSTANT(CURLE_HTTP_POST_ERROR); - REGISTER_CURL_CONSTANT(CURLE_HTTP_RANGE_ERROR); REGISTER_CURL_CONSTANT(CURLE_HTTP_RETURNED_ERROR); REGISTER_CURL_CONSTANT(CURLE_LDAP_CANNOT_BIND); REGISTER_CURL_CONSTANT(CURLE_LDAP_SEARCH_FAILED); - REGISTER_CURL_CONSTANT(CURLE_LIBRARY_NOT_FOUND); - REGISTER_CURL_CONSTANT(CURLE_MALFORMAT_USER); - REGISTER_CURL_CONSTANT(CURLE_OBSOLETE); REGISTER_CURL_CONSTANT(CURLE_OK); REGISTER_CURL_CONSTANT(CURLE_OPERATION_TIMEDOUT); - REGISTER_CURL_CONSTANT(CURLE_OPERATION_TIMEOUTED); REGISTER_CURL_CONSTANT(CURLE_OUT_OF_MEMORY); REGISTER_CURL_CONSTANT(CURLE_PARTIAL_FILE); REGISTER_CURL_CONSTANT(CURLE_READ_ERROR); REGISTER_CURL_CONSTANT(CURLE_RECV_ERROR); REGISTER_CURL_CONSTANT(CURLE_SEND_ERROR); - REGISTER_CURL_CONSTANT(CURLE_SHARE_IN_USE); REGISTER_CURL_CONSTANT(CURLE_SSL_CACERT); REGISTER_CURL_CONSTANT(CURLE_SSL_CERTPROBLEM); REGISTER_CURL_CONSTANT(CURLE_SSL_CIPHER); REGISTER_CURL_CONSTANT(CURLE_SSL_CONNECT_ERROR); REGISTER_CURL_CONSTANT(CURLE_SSL_ENGINE_NOTFOUND); REGISTER_CURL_CONSTANT(CURLE_SSL_ENGINE_SETFAILED); - REGISTER_CURL_CONSTANT(CURLE_SSL_PEER_CERTIFICATE); #if LIBCURL_VERSION_NUM >= 0x072700 /* Available since 7.39.0 */ REGISTER_CURL_CONSTANT(CURLE_SSL_PINNEDPUBKEYNOTMATCH); #endif @@ -610,7 +583,6 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLE_UNKNOWN_TELNET_OPTION); REGISTER_CURL_CONSTANT(CURLE_UNSUPPORTED_PROTOCOL); REGISTER_CURL_CONSTANT(CURLE_URL_MALFORMAT); - REGISTER_CURL_CONSTANT(CURLE_URL_MALFORMAT_USER); REGISTER_CURL_CONSTANT(CURLE_WRITE_ERROR); /* cURL info constants */ @@ -735,7 +707,7 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURL_IPRESOLVE_WHATEVER); /* Available since 7.11.0 */ - REGISTER_CURL_CONSTANT(CURLE_FTP_SSL_FAILED); + REGISTER_CURL_CONSTANT(CURLE_USE_SSL_FAILED); REGISTER_CURL_CONSTANT(CURLFTPSSL_ALL); REGISTER_CURL_CONSTANT(CURLFTPSSL_CONTROL); REGISTER_CURL_CONSTANT(CURLFTPSSL_NONE); @@ -791,13 +763,12 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLOPT_MAX_RECV_SPEED_LARGE); REGISTER_CURL_CONSTANT(CURLOPT_MAX_SEND_SPEED_LARGE); -#if LIBCURL_VERSION_NUM >= 0x071000 /* Available since 7.16.0 */ + /* Available since 7.16.0 */ REGISTER_CURL_CONSTANT(CURLE_SSL_CACERT_BADFILE); REGISTER_CURL_CONSTANT(CURLOPT_SSL_SESSIONID_CACHE); REGISTER_CURL_CONSTANT(CURLMOPT_PIPELINING); -#endif -#if LIBCURL_VERSION_NUM >= 0x071001 /* Available since 7.16.1 */ + /* Available since 7.16.1 */ REGISTER_CURL_CONSTANT(CURLE_SSH); REGISTER_CURL_CONSTANT(CURLOPT_FTP_SSL_CCC); REGISTER_CURL_CONSTANT(CURLOPT_SSH_AUTH_TYPES); @@ -806,26 +777,22 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLFTPSSL_CCC_ACTIVE); REGISTER_CURL_CONSTANT(CURLFTPSSL_CCC_NONE); REGISTER_CURL_CONSTANT(CURLFTPSSL_CCC_PASSIVE); -#endif -#if LIBCURL_VERSION_NUM >= 0x071002 /* Available since 7.16.2 */ + /* Available since 7.16.2 */ REGISTER_CURL_CONSTANT(CURLOPT_CONNECTTIMEOUT_MS); REGISTER_CURL_CONSTANT(CURLOPT_HTTP_CONTENT_DECODING); REGISTER_CURL_CONSTANT(CURLOPT_HTTP_TRANSFER_DECODING); REGISTER_CURL_CONSTANT(CURLOPT_TIMEOUT_MS); -#endif -#if LIBCURL_VERSION_NUM >= 0x071003 /* Available since 7.16.3 */ + /* Available since 7.16.3 */ REGISTER_CURL_CONSTANT(CURLMOPT_MAXCONNECTS); -#endif -#if LIBCURL_VERSION_NUM >= 0x071004 /* Available since 7.16.4 */ + /* Available since 7.16.4 */ REGISTER_CURL_CONSTANT(CURLOPT_KRBLEVEL); REGISTER_CURL_CONSTANT(CURLOPT_NEW_DIRECTORY_PERMS); REGISTER_CURL_CONSTANT(CURLOPT_NEW_FILE_PERMS); -#endif -#if LIBCURL_VERSION_NUM >= 0x071100 /* Available since 7.17.0 */ + /* Available since 7.17.0 */ REGISTER_CURL_CONSTANT(CURLOPT_APPEND); REGISTER_CURL_CONSTANT(CURLOPT_DIRLISTONLY); REGISTER_CURL_CONSTANT(CURLOPT_USE_SSL); @@ -834,11 +801,18 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLUSESSL_CONTROL); REGISTER_CURL_CONSTANT(CURLUSESSL_NONE); REGISTER_CURL_CONSTANT(CURLUSESSL_TRY); -#endif -#if LIBCURL_VERSION_NUM >= 0x071101 /* Available since 7.17.1 */ + REGISTER_CURL_CONSTANT(CURLE_REMOTE_ACCESS_DENIED); + REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_SET_TYPE); + REGISTER_CURL_CONSTANT(CURLE_UPLOAD_FAILED); + REGISTER_CURL_CONSTANT(CURLE_QUOTE_ERROR); + REGISTER_CURL_CONSTANT(CURLE_INTERFACE_FAILED); + REGISTER_CURL_CONSTANT(CURLE_RANGE_ERROR); + REGISTER_CURL_CONSTANT(CURLE_NOT_BUILT_IN); + + /* Available since 7.17.1 */ REGISTER_CURL_CONSTANT(CURLOPT_SSH_HOST_PUBLIC_KEY_MD5); -#endif + REGISTER_CURL_CONSTANT(CURLE_PEER_FAILED_VERIFICATION); #if LIBCURL_VERSION_NUM >= 0x071200 /* Available since 7.18.0 */ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TRANSFER_MODE); @@ -1716,12 +1690,10 @@ PHP_FUNCTION(curl_version) if (d->age >= 2) { CAAS("libidn", d->libidn); } -#if LIBCURL_VERSION_NUM >= 0x071001 /* Available since 7.16.1 */ if (d->age >= 3) { CAAL("iconv_ver_num", d->iconv_ver_num); CAAS("libssh_version", d->libssh_version); } -#endif #if LIBCURL_VERSION_NUM >= 0x073900 /* Available since 7.57.0 */ if (d->age >= 4) { CAAL("brotli_ver_num", d->brotli_ver_num); @@ -2079,32 +2051,18 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ case CURLOPT_CONNECT_ONLY: case CURLOPT_LOCALPORT: case CURLOPT_LOCALPORTRANGE: -#if LIBCURL_VERSION_NUM >= 0x071000 /* Available since 7.16.0 */ case CURLOPT_SSL_SESSIONID_CACHE: -#endif -#if LIBCURL_VERSION_NUM >= 0x071001 /* Available since 7.16.1 */ case CURLOPT_FTP_SSL_CCC: case CURLOPT_SSH_AUTH_TYPES: -#endif -#if LIBCURL_VERSION_NUM >= 0x071002 /* Available since 7.16.2 */ case CURLOPT_CONNECTTIMEOUT_MS: case CURLOPT_HTTP_CONTENT_DECODING: case CURLOPT_HTTP_TRANSFER_DECODING: case CURLOPT_TIMEOUT_MS: -#endif -#if LIBCURL_VERSION_NUM >= 0x071004 /* Available since 7.16.4 */ case CURLOPT_NEW_DIRECTORY_PERMS: case CURLOPT_NEW_FILE_PERMS: -#endif -#if LIBCURL_VERSION_NUM >= 0x071100 /* Available since 7.17.0 */ case CURLOPT_USE_SSL: case CURLOPT_APPEND: case CURLOPT_DIRLISTONLY: -#else - case CURLOPT_FTP_SSL: - case CURLOPT_FTPAPPEND: - case CURLOPT_FTPLISTONLY: -#endif #if LIBCURL_VERSION_NUM >= 0x071200 /* Available since 7.18.0 */ case CURLOPT_PROXY_TRANSFER_MODE: #endif @@ -2245,9 +2203,7 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ case CURLOPT_USERPWD: case CURLOPT_COOKIELIST: case CURLOPT_FTP_ALTERNATIVE_TO_USER: -#if LIBCURL_VERSION_NUM >= 0x071101 /* Available since 7.17.1 */ case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5: -#endif #if LIBCURL_VERSION_NUM >= 0x071301 /* Available since 7.19.1 */ case CURLOPT_PASSWORD: case CURLOPT_PROXYPASSWORD: @@ -2343,11 +2299,7 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ #if LIBCURL_VERSION_NUM >= 0x072800 /* Available since 7.40.0 */ case CURLOPT_UNIX_SOCKET_PATH: #endif -#if LIBCURL_VERSION_NUM >= 0x071004 /* Available since 7.16.4 */ case CURLOPT_KRBLEVEL: -#else - case CURLOPT_KRB4LEVEL: -#endif { if (Z_ISNULL_P(zvalue)) { error = curl_easy_setopt(ch->cp, option, NULL); @@ -2751,25 +2703,12 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ error = curl_easy_setopt(ch->cp, CURLOPT_HTTPPOST, first); #endif } else { -#if LIBCURL_VERSION_NUM >= 0x071101 zend_string *tmp_str; zend_string *str = zval_get_tmp_string(zvalue, &tmp_str); /* with curl 7.17.0 and later, we can use COPYPOSTFIELDS, but we have to provide size before */ error = curl_easy_setopt(ch->cp, CURLOPT_POSTFIELDSIZE, ZSTR_LEN(str)); error = curl_easy_setopt(ch->cp, CURLOPT_COPYPOSTFIELDS, ZSTR_VAL(str)); zend_tmp_string_release(tmp_str); -#else - char *post = NULL; - zend_string *tmp_str; - zend_string *str = zval_get_tmp_string(zvalue, &tmp_str); - - post = estrndup(ZSTR_VAL(str), ZSTR_LEN(str)); - zend_llist_add_element(&ch->to_free->str, &post); - - curl_easy_setopt(ch->cp, CURLOPT_POSTFIELDS, post); - error = curl_easy_setopt(ch->cp, CURLOPT_POSTFIELDSIZE, ZSTR_LEN(str)); - zend_tmp_string_release(tmp_str); -#endif } break; @@ -2837,10 +2776,8 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ case CURLOPT_RANDOM_FILE: case CURLOPT_SSLCERT: case CURLOPT_NETRC_FILE: -#if LIBCURL_VERSION_NUM >= 0x071001 /* Available since 7.16.1 */ case CURLOPT_SSH_PRIVATE_KEYFILE: case CURLOPT_SSH_PUBLIC_KEYFILE: -#endif #if LIBCURL_VERSION_NUM >= 0x071300 /* Available since 7.19.0 */ case CURLOPT_CRLFILE: case CURLOPT_ISSUERCERT: diff --git a/ext/curl/multi.c b/ext/curl/multi.c index 45995f6ac8ecc..e94bda9f60092 100644 --- a/ext/curl/multi.c +++ b/ext/curl/multi.c @@ -552,12 +552,8 @@ static int _php_curl_multi_setopt(php_curlm *mh, zend_long option, zval *zvalue, CURLMcode error = CURLM_OK; switch (option) { -#if LIBCURL_VERSION_NUM >= 0x071000 /* 7.16.0 */ case CURLMOPT_PIPELINING: -#endif -#if LIBCURL_VERSION_NUM >= 0x071003 /* 7.16.3 */ case CURLMOPT_MAXCONNECTS: -#endif #if LIBCURL_VERSION_NUM >= 0x071e00 /* 7.30.0 */ case CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE: case CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE: From 7eadb1e2368c988dbc3b0988f738264f0d02d022 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Thu, 16 Jan 2020 19:03:25 +0100 Subject: [PATCH 2/6] Undo constant removal Let's wait for PR #5072, and act accordingly then. --- ext/curl/interface.c | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/ext/curl/interface.c b/ext/curl/interface.c index f288937c41ac5..6e640784fbd11 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -540,41 +540,64 @@ PHP_MINIT_FUNCTION(curl) /* */ REGISTER_CURL_CONSTANT(CURLE_ABORTED_BY_CALLBACK); + REGISTER_CURL_CONSTANT(CURLE_BAD_CALLING_ORDER); REGISTER_CURL_CONSTANT(CURLE_BAD_CONTENT_ENCODING); REGISTER_CURL_CONSTANT(CURLE_BAD_DOWNLOAD_RESUME); REGISTER_CURL_CONSTANT(CURLE_BAD_FUNCTION_ARGUMENT); + REGISTER_CURL_CONSTANT(CURLE_BAD_PASSWORD_ENTERED); REGISTER_CURL_CONSTANT(CURLE_COULDNT_CONNECT); REGISTER_CURL_CONSTANT(CURLE_COULDNT_RESOLVE_HOST); REGISTER_CURL_CONSTANT(CURLE_COULDNT_RESOLVE_PROXY); REGISTER_CURL_CONSTANT(CURLE_FAILED_INIT); REGISTER_CURL_CONSTANT(CURLE_FILE_COULDNT_READ_FILE); + REGISTER_CURL_CONSTANT(CURLE_FTP_ACCESS_DENIED); + REGISTER_CURL_CONSTANT(CURLE_FTP_BAD_DOWNLOAD_RESUME); REGISTER_CURL_CONSTANT(CURLE_FTP_CANT_GET_HOST); + REGISTER_CURL_CONSTANT(CURLE_FTP_CANT_RECONNECT); + REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_GET_SIZE); REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_RETR_FILE); + REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_SET_ASCII); + REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_SET_BINARY); + REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_STOR_FILE); REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_USE_REST); + REGISTER_CURL_CONSTANT(CURLE_FTP_PARTIAL_FILE); REGISTER_CURL_CONSTANT(CURLE_FTP_PORT_FAILED); + REGISTER_CURL_CONSTANT(CURLE_FTP_QUOTE_ERROR); + REGISTER_CURL_CONSTANT(CURLE_FTP_USER_PASSWORD_INCORRECT); REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_227_FORMAT); REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_PASS_REPLY); REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_PASV_REPLY); REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_SERVER_REPLY); + REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_USER_REPLY); + REGISTER_CURL_CONSTANT(CURLE_FTP_WRITE_ERROR); REGISTER_CURL_CONSTANT(CURLE_FUNCTION_NOT_FOUND); REGISTER_CURL_CONSTANT(CURLE_GOT_NOTHING); + REGISTER_CURL_CONSTANT(CURLE_HTTP_NOT_FOUND); + REGISTER_CURL_CONSTANT(CURLE_HTTP_PORT_FAILED); REGISTER_CURL_CONSTANT(CURLE_HTTP_POST_ERROR); + REGISTER_CURL_CONSTANT(CURLE_HTTP_RANGE_ERROR); REGISTER_CURL_CONSTANT(CURLE_HTTP_RETURNED_ERROR); REGISTER_CURL_CONSTANT(CURLE_LDAP_CANNOT_BIND); REGISTER_CURL_CONSTANT(CURLE_LDAP_SEARCH_FAILED); + REGISTER_CURL_CONSTANT(CURLE_LIBRARY_NOT_FOUND); + REGISTER_CURL_CONSTANT(CURLE_MALFORMAT_USER); + REGISTER_CURL_CONSTANT(CURLE_OBSOLETE); REGISTER_CURL_CONSTANT(CURLE_OK); REGISTER_CURL_CONSTANT(CURLE_OPERATION_TIMEDOUT); + REGISTER_CURL_CONSTANT(CURLE_OPERATION_TIMEOUTED); REGISTER_CURL_CONSTANT(CURLE_OUT_OF_MEMORY); REGISTER_CURL_CONSTANT(CURLE_PARTIAL_FILE); REGISTER_CURL_CONSTANT(CURLE_READ_ERROR); REGISTER_CURL_CONSTANT(CURLE_RECV_ERROR); REGISTER_CURL_CONSTANT(CURLE_SEND_ERROR); + REGISTER_CURL_CONSTANT(CURLE_SHARE_IN_USE); REGISTER_CURL_CONSTANT(CURLE_SSL_CACERT); REGISTER_CURL_CONSTANT(CURLE_SSL_CERTPROBLEM); REGISTER_CURL_CONSTANT(CURLE_SSL_CIPHER); REGISTER_CURL_CONSTANT(CURLE_SSL_CONNECT_ERROR); REGISTER_CURL_CONSTANT(CURLE_SSL_ENGINE_NOTFOUND); REGISTER_CURL_CONSTANT(CURLE_SSL_ENGINE_SETFAILED); + REGISTER_CURL_CONSTANT(CURLE_SSL_PEER_CERTIFICATE); #if LIBCURL_VERSION_NUM >= 0x072700 /* Available since 7.39.0 */ REGISTER_CURL_CONSTANT(CURLE_SSL_PINNEDPUBKEYNOTMATCH); #endif @@ -583,6 +606,7 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLE_UNKNOWN_TELNET_OPTION); REGISTER_CURL_CONSTANT(CURLE_UNSUPPORTED_PROTOCOL); REGISTER_CURL_CONSTANT(CURLE_URL_MALFORMAT); + REGISTER_CURL_CONSTANT(CURLE_URL_MALFORMAT_USER); REGISTER_CURL_CONSTANT(CURLE_WRITE_ERROR); /* cURL info constants */ @@ -707,7 +731,7 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURL_IPRESOLVE_WHATEVER); /* Available since 7.11.0 */ - REGISTER_CURL_CONSTANT(CURLE_USE_SSL_FAILED); + REGISTER_CURL_CONSTANT(CURLE_FTP_SSL_FAILED); REGISTER_CURL_CONSTANT(CURLFTPSSL_ALL); REGISTER_CURL_CONSTANT(CURLFTPSSL_CONTROL); REGISTER_CURL_CONSTANT(CURLFTPSSL_NONE); @@ -802,17 +826,8 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLUSESSL_NONE); REGISTER_CURL_CONSTANT(CURLUSESSL_TRY); - REGISTER_CURL_CONSTANT(CURLE_REMOTE_ACCESS_DENIED); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_SET_TYPE); - REGISTER_CURL_CONSTANT(CURLE_UPLOAD_FAILED); - REGISTER_CURL_CONSTANT(CURLE_QUOTE_ERROR); - REGISTER_CURL_CONSTANT(CURLE_INTERFACE_FAILED); - REGISTER_CURL_CONSTANT(CURLE_RANGE_ERROR); - REGISTER_CURL_CONSTANT(CURLE_NOT_BUILT_IN); - /* Available since 7.17.1 */ REGISTER_CURL_CONSTANT(CURLOPT_SSH_HOST_PUBLIC_KEY_MD5); - REGISTER_CURL_CONSTANT(CURLE_PEER_FAILED_VERIFICATION); #if LIBCURL_VERSION_NUM >= 0x071200 /* Available since 7.18.0 */ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TRANSFER_MODE); From 53ca45b6981312feb2a941437bd3f800d1f867e3 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Thu, 16 Jan 2020 19:35:10 +0100 Subject: [PATCH 3/6] Bump required libcurl version to 7.29.0 Apparently, bumping the requirements only to libcurl >= 7.19.1 was very conservative, and several devs suggested to bump the requirements to libcurl >= 7.29.0 right away, we follow suit. After all, libcurl 7.29.0 will be almost eight years old when PHP 8.0.0 will be released, so at least this version is supposed to be available everywhere. --- ext/curl/config.m4 | 2 +- ext/curl/interface.c | 168 +++++-------------------------------------- ext/curl/multi.c | 36 ---------- 3 files changed, 20 insertions(+), 186 deletions(-) diff --git a/ext/curl/config.m4 b/ext/curl/config.m4 index 436c37974d33c..1f6bd4c764105 100644 --- a/ext/curl/config.m4 +++ b/ext/curl/config.m4 @@ -4,7 +4,7 @@ PHP_ARG_WITH([curl], [Include cURL support])]) if test "$PHP_CURL" != "no"; then - PKG_CHECK_MODULES([CURL], [libcurl >= 7.17.1]) + PKG_CHECK_MODULES([CURL], [libcurl >= 7.29.0]) PKG_CHECK_VAR([CURL_FEATURES], [libcurl], [supported_features]) PHP_EVAL_LIBLINE($CURL_LIBS, CURL_SHARED_LIBADD) diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 6e640784fbd11..b9fb0d33f0bce 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -138,23 +138,7 @@ static int php_curl_option_url(php_curl *ch, const char *url, const size_t len) { /* Disable file:// if open_basedir are used */ if (PG(open_basedir) && *PG(open_basedir)) { -#if LIBCURL_VERSION_NUM >= 0x071304 curl_easy_setopt(ch->cp, CURLOPT_PROTOCOLS, CURLPROTO_ALL & ~CURLPROTO_FILE); -#else - php_url *uri; - - if (!(uri = php_url_parse_ex(url, len))) { - php_error_docref(NULL, E_WARNING, "Invalid URL '%s'", url); - return FAILURE; - } - - if (uri->scheme && zend_string_equals_literal_ci(uri->scheme, "file")) { - php_error_docref(NULL, E_WARNING, "Protocol 'file' disabled in cURL"); - php_url_free(uri); - return FAILURE; - } - php_url_free(uri); -#endif } #if LIBCURL_VERSION_NUM > 0x073800 && defined(PHP_WIN32) @@ -255,9 +239,7 @@ static const zend_function_entry curl_functions[] = { PHP_FE(curl_reset, arginfo_curl_reset) PHP_FE(curl_escape, arginfo_curl_escape) PHP_FE(curl_unescape, arginfo_curl_unescape) -#if LIBCURL_VERSION_NUM >= 0x071200 /* 7.18.0 */ PHP_FE(curl_pause, arginfo_curl_pause) -#endif PHP_FE(curl_file_create, arginfo_curl_file_create) PHP_FE(curl_multi_init, arginfo_curl_multi_init) PHP_FE(curl_multi_add_handle, arginfo_curl_multi_add_handle) @@ -339,15 +321,11 @@ PHP_MINFO_FUNCTION(curl) {"Largefile", CURL_VERSION_LARGEFILE}, {"libz", CURL_VERSION_LIBZ}, {"NTLM", CURL_VERSION_NTLM}, -#if LIBCURL_VERSION_NUM >= 0x071600 /* 7.22.0 */ {"NTLMWB", CURL_VERSION_NTLM_WB}, -#endif {"SPNEGO", CURL_VERSION_SPNEGO}, {"SSL", CURL_VERSION_SSL}, {"SSPI", CURL_VERSION_SSPI}, -#if LIBCURL_VERSION_NUM >= 0x071504 /* 7.21.4 */ {"TLS-SRP", CURL_VERSION_TLSAUTH_SRP}, -#endif #if LIBCURL_VERSION_NUM >= 0x072100 /* 7.33.0 */ {"HTTP2", CURL_VERSION_HTTP2}, #endif @@ -411,8 +389,6 @@ PHP_MINFO_FUNCTION(curl) } #endif -#if LIBCURL_VERSION_NUM >= 0x071300 - if (d->iconv_ver_num) { php_info_print_table_row(2, "IconV Version", d->iconv_ver_num); } @@ -420,7 +396,7 @@ PHP_MINFO_FUNCTION(curl) if (d->libssh_version) { php_info_print_table_row(2, "libSSH Version", d->libssh_version); } -#endif + php_info_print_table_end(); DISPLAY_INI_ENTRIES(); @@ -829,7 +805,7 @@ PHP_MINIT_FUNCTION(curl) /* Available since 7.17.1 */ REGISTER_CURL_CONSTANT(CURLOPT_SSH_HOST_PUBLIC_KEY_MD5); -#if LIBCURL_VERSION_NUM >= 0x071200 /* Available since 7.18.0 */ + /* Available since 7.18.0 */ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TRANSFER_MODE); REGISTER_CURL_CONSTANT(CURLPAUSE_ALL); REGISTER_CURL_CONSTANT(CURLPAUSE_CONT); @@ -842,13 +818,11 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLPROXY_SOCKS4A); REGISTER_CURL_CONSTANT(CURLPROXY_SOCKS5_HOSTNAME); -#endif -#if LIBCURL_VERSION_NUM >= 0x071202 /* Available since 7.18.2 */ + /* Available since 7.18.2 */ REGISTER_CURL_CONSTANT(CURLINFO_REDIRECT_URL); -#endif -#if LIBCURL_VERSION_NUM >= 0x071300 /* Available since 7.19.0 */ + /* Available since 7.19.0 */ REGISTER_CURL_CONSTANT(CURLINFO_APPCONNECT_TIME); REGISTER_CURL_CONSTANT(CURLINFO_PRIMARY_IP); @@ -864,9 +838,8 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLSSH_AUTH_NONE); REGISTER_CURL_CONSTANT(CURLSSH_AUTH_PASSWORD); REGISTER_CURL_CONSTANT(CURLSSH_AUTH_PUBLICKEY); -#endif -#if LIBCURL_VERSION_NUM >= 0x071301 /* Available since 7.19.1 */ + /* Available since 7.19.1 */ REGISTER_CURL_CONSTANT(CURLINFO_CERTINFO); REGISTER_CURL_CONSTANT(CURLOPT_CERTINFO); REGISTER_CURL_CONSTANT(CURLOPT_PASSWORD); @@ -877,13 +850,11 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURL_REDIR_POST_301); REGISTER_CURL_CONSTANT(CURL_REDIR_POST_302); REGISTER_CURL_CONSTANT(CURL_REDIR_POST_ALL); -#endif -#if LIBCURL_VERSION_NUM >= 0x071303 /* Available since 7.19.3 */ + /* Available since 7.19.3 */ REGISTER_CURL_CONSTANT(CURLAUTH_DIGEST_IE); -#endif -#if LIBCURL_VERSION_NUM >= 0x071304 /* Available since 7.19.4 */ + /* Available since 7.19.4 */ REGISTER_CURL_CONSTANT(CURLINFO_CONDITION_UNMET); REGISTER_CURL_CONSTANT(CURLOPT_NOPROXY); @@ -912,14 +883,12 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLFTP_CREATE_DIR); REGISTER_CURL_CONSTANT(CURLFTP_CREATE_DIR_NONE); REGISTER_CURL_CONSTANT(CURLFTP_CREATE_DIR_RETRY); -#endif -#if LIBCURL_VERSION_NUM >= 0x071306 /* Available since 7.19.6 */ + /* Available since 7.19.6 */ REGISTER_CURL_CONSTANT(CURL_VERSION_CURLDEBUG); REGISTER_CURL_CONSTANT(CURLOPT_SSH_KNOWNHOSTS); -#endif -#if LIBCURL_VERSION_NUM >= 0x071400 /* Available since 7.20.0 */ + /* Available since 7.20.0 */ REGISTER_CURL_CONSTANT(CURLINFO_RTSP_CLIENT_CSEQ); REGISTER_CURL_CONSTANT(CURLINFO_RTSP_CSEQ_RECV); REGISTER_CURL_CONSTANT(CURLINFO_RTSP_SERVER_CSEQ); @@ -951,9 +920,8 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURL_RTSPREQ_SET_PARAMETER); REGISTER_CURL_CONSTANT(CURL_RTSPREQ_SETUP); REGISTER_CURL_CONSTANT(CURL_RTSPREQ_TEARDOWN); -#endif -#if LIBCURL_VERSION_NUM >= 0x071500 /* Available since 7.21.0 */ + /* Available since 7.21.0 */ REGISTER_CURL_CONSTANT(CURLINFO_LOCAL_IP); REGISTER_CURL_CONSTANT(CURLINFO_LOCAL_PORT); REGISTER_CURL_CONSTANT(CURLINFO_PRIMARY_PORT); @@ -968,59 +936,49 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURL_FNMATCHFUNC_FAIL); REGISTER_CURL_CONSTANT(CURL_FNMATCHFUNC_MATCH); REGISTER_CURL_CONSTANT(CURL_FNMATCHFUNC_NOMATCH); -#endif -#if LIBCURL_VERSION_NUM >= 0x071502 /* Available since 7.21.2 */ + /* Available since 7.21.2 */ REGISTER_CURL_CONSTANT(CURLPROTO_GOPHER); -#endif -#if LIBCURL_VERSION_NUM >= 0x071503 /* Available since 7.21.3 */ + /* Available since 7.21.3 */ REGISTER_CURL_CONSTANT(CURLAUTH_ONLY); REGISTER_CURL_CONSTANT(CURLOPT_RESOLVE); -#endif -#if LIBCURL_VERSION_NUM >= 0x071504 /* Available since 7.21.4 */ + /* Available since 7.21.4 */ REGISTER_CURL_CONSTANT(CURLOPT_TLSAUTH_PASSWORD); REGISTER_CURL_CONSTANT(CURLOPT_TLSAUTH_TYPE); REGISTER_CURL_CONSTANT(CURLOPT_TLSAUTH_USERNAME); REGISTER_CURL_CONSTANT(CURL_TLSAUTH_SRP); REGISTER_CURL_CONSTANT(CURL_VERSION_TLSAUTH_SRP); -#endif -#if LIBCURL_VERSION_NUM >= 0x071506 /* Available since 7.21.6 */ + /* Available since 7.21.6 */ REGISTER_CURL_CONSTANT(CURLOPT_ACCEPT_ENCODING); REGISTER_CURL_CONSTANT(CURLOPT_TRANSFER_ENCODING); -#endif -#if LIBCURL_VERSION_NUM >= 0x071600 /* Available since 7.22.0 */ + /* Available since 7.22.0 */ REGISTER_CURL_CONSTANT(CURLAUTH_NTLM_WB); REGISTER_CURL_CONSTANT(CURLGSSAPI_DELEGATION_FLAG); REGISTER_CURL_CONSTANT(CURLGSSAPI_DELEGATION_POLICY_FLAG); REGISTER_CURL_CONSTANT(CURLOPT_GSSAPI_DELEGATION); REGISTER_CURL_CONSTANT(CURL_VERSION_NTLM_WB); -#endif -#if LIBCURL_VERSION_NUM >= 0x071800 /* Available since 7.24.0 */ + /* Available since 7.24.0 */ REGISTER_CURL_CONSTANT(CURLOPT_ACCEPTTIMEOUT_MS); REGISTER_CURL_CONSTANT(CURLOPT_DNS_SERVERS); -#endif -#if LIBCURL_VERSION_NUM >= 0x071900 /* Available since 7.25.0 */ + /* Available since 7.25.0 */ REGISTER_CURL_CONSTANT(CURLOPT_MAIL_AUTH); REGISTER_CURL_CONSTANT(CURLOPT_SSL_OPTIONS); REGISTER_CURL_CONSTANT(CURLOPT_TCP_KEEPALIVE); REGISTER_CURL_CONSTANT(CURLOPT_TCP_KEEPIDLE); REGISTER_CURL_CONSTANT(CURLOPT_TCP_KEEPINTVL); REGISTER_CURL_CONSTANT(CURLSSLOPT_ALLOW_BEAST); -#endif -#if LIBCURL_VERSION_NUM >= 0x071901 /* Available since 7.25.1 */ + /* Available since 7.25.1 */ REGISTER_CURL_CONSTANT(CURL_REDIR_POST_303); -#endif -#if LIBCURL_VERSION_NUM >= 0x071c00 /* Available since 7.28.0 */ + /* Available since 7.28.0 */ REGISTER_CURL_CONSTANT(CURLSSH_AUTH_AGENT); -#endif #if LIBCURL_VERSION_NUM >= 0x071e00 /* Available since 7.30.0 */ REGISTER_CURL_CONSTANT(CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE); @@ -1370,7 +1328,6 @@ static size_t curl_write(char *data, size_t size, size_t nmemb, void *ctx) } /* }}} */ -#if LIBCURL_VERSION_NUM >= 0x071500 /* Available since 7.21.0 */ /* {{{ curl_fnmatch */ static int curl_fnmatch(void *ctx, const char *pattern, const char *string) @@ -1416,7 +1373,6 @@ static int curl_fnmatch(void *ctx, const char *pattern, const char *string) return rval; } /* }}} */ -#endif /* {{{ curl_progress */ @@ -1729,9 +1685,7 @@ php_curl *alloc_curl_handle() ch->handlers->write_header = ecalloc(1, sizeof(php_curl_write)); ch->handlers->read = ecalloc(1, sizeof(php_curl_read)); ch->handlers->progress = NULL; -#if LIBCURL_VERSION_NUM >= 0x071500 /* Available since 7.21.0 */ ch->handlers->fnmatch = NULL; -#endif ch->clone = emalloc(sizeof(uint32_t)); *ch->clone = 1; @@ -1748,7 +1702,6 @@ php_curl *alloc_curl_handle() } /* }}} */ -#if LIBCURL_VERSION_NUM >= 0x071301 /* Available since 7.19.1 */ /* {{{ create_certinfo */ static void create_certinfo(struct curl_certinfo *ci, zval *listcode) @@ -1782,7 +1735,6 @@ static void create_certinfo(struct curl_certinfo *ci, zval *listcode) } } /* }}} */ -#endif /* {{{ _php_curl_set_default_options() Set default options for a handle */ @@ -1912,7 +1864,6 @@ void _php_setup_easy_copy_handlers(php_curl *ch, php_curl *source) curl_easy_setopt(ch->cp, CURLOPT_PROGRESSDATA, (void *) ch); } -#if LIBCURL_VERSION_NUM >= 0x071500 if (source->handlers->fnmatch) { ch->handlers->fnmatch = ecalloc(1, sizeof(php_curl_fnmatch)); if (!Z_ISUNDEF(source->handlers->fnmatch->func_name)) { @@ -1921,7 +1872,6 @@ void _php_setup_easy_copy_handlers(php_curl *ch, php_curl *source) ch->handlers->fnmatch->method = source->handlers->fnmatch->method; curl_easy_setopt(ch->cp, CURLOPT_FNMATCH_DATA, (void *) ch); } -#endif efree(ch->to_free->slist); efree(ch->to_free); @@ -2003,13 +1953,9 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ case CURLOPT_SSL_VERIFYHOST: lval = zval_get_long(zvalue); if (lval == 1) { -#if LIBCURL_VERSION_NUM <= 0x071c00 /* 7.28.0 */ - php_error_docref(NULL, E_NOTICE, "CURLOPT_SSL_VERIFYHOST with value 1 is deprecated and will be removed as of libcurl 7.28.1. It is recommended to use value 2 instead"); -#else php_error_docref(NULL, E_NOTICE, "CURLOPT_SSL_VERIFYHOST no longer accepts the value 1, value 2 will be used instead"); error = curl_easy_setopt(ch->cp, option, 2); break; -#endif } case CURLOPT_AUTOREFERER: case CURLOPT_BUFFERSIZE: @@ -2078,45 +2024,25 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ case CURLOPT_USE_SSL: case CURLOPT_APPEND: case CURLOPT_DIRLISTONLY: -#if LIBCURL_VERSION_NUM >= 0x071200 /* Available since 7.18.0 */ case CURLOPT_PROXY_TRANSFER_MODE: -#endif -#if LIBCURL_VERSION_NUM >= 0x071300 /* Available since 7.19.0 */ case CURLOPT_ADDRESS_SCOPE: -#endif -#if LIBCURL_VERSION_NUM > 0x071301 /* Available since 7.19.1 */ case CURLOPT_CERTINFO: -#endif -#if LIBCURL_VERSION_NUM >= 0x071304 /* Available since 7.19.4 */ case CURLOPT_PROTOCOLS: case CURLOPT_REDIR_PROTOCOLS: case CURLOPT_SOCKS5_GSSAPI_NEC: case CURLOPT_TFTP_BLKSIZE: -#endif -#if LIBCURL_VERSION_NUM >= 0x071400 /* Available since 7.20.0 */ case CURLOPT_FTP_USE_PRET: case CURLOPT_RTSP_CLIENT_CSEQ: case CURLOPT_RTSP_REQUEST: case CURLOPT_RTSP_SERVER_CSEQ: -#endif -#if LIBCURL_VERSION_NUM >= 0x071500 /* Available since 7.21.0 */ case CURLOPT_WILDCARDMATCH: -#endif -#if LIBCURL_VERSION_NUM >= 0x071504 /* Available since 7.21.4 */ case CURLOPT_TLSAUTH_TYPE: -#endif -#if LIBCURL_VERSION_NUM >= 0x071600 /* Available since 7.22.0 */ case CURLOPT_GSSAPI_DELEGATION: -#endif -#if LIBCURL_VERSION_NUM >= 0x071800 /* Available since 7.24.0 */ case CURLOPT_ACCEPTTIMEOUT_MS: -#endif -#if LIBCURL_VERSION_NUM >= 0x071900 /* Available since 7.25.0 */ case CURLOPT_SSL_OPTIONS: case CURLOPT_TCP_KEEPALIVE: case CURLOPT_TCP_KEEPIDLE: case CURLOPT_TCP_KEEPINTVL: -#endif #if LIBCURL_VERSION_NUM >= 0x071f00 /* Available since 7.31.0 */ case CURLOPT_SASL_IR: #endif @@ -2176,13 +2102,11 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ case CURLOPT_DISALLOW_USERNAME_IN_URL: #endif lval = zval_get_long(zvalue); -#if LIBCURL_VERSION_NUM >= 0x071304 if ((option == CURLOPT_PROTOCOLS || option == CURLOPT_REDIR_PROTOCOLS) && (PG(open_basedir) && *PG(open_basedir)) && (lval & CURLPROTO_FILE)) { php_error_docref(NULL, E_WARNING, "CURLPROTO_FILE cannot be activated when an open_basedir is set"); return 1; } -#endif # if defined(ZTS) if (option == CURLOPT_DNS_USE_GLOBAL_CACHE && lval) { php_error_docref(NULL, E_WARNING, "CURLOPT_DNS_USE_GLOBAL_CACHE cannot be activated when thread safety is enabled"); @@ -2219,37 +2143,21 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ case CURLOPT_COOKIELIST: case CURLOPT_FTP_ALTERNATIVE_TO_USER: case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5: -#if LIBCURL_VERSION_NUM >= 0x071301 /* Available since 7.19.1 */ case CURLOPT_PASSWORD: case CURLOPT_PROXYPASSWORD: case CURLOPT_PROXYUSERNAME: case CURLOPT_USERNAME: -#endif -#if LIBCURL_VERSION_NUM >= 0x071304 /* Available since 7.19.4 */ case CURLOPT_NOPROXY: case CURLOPT_SOCKS5_GSSAPI_SERVICE: -#endif -#if LIBCURL_VERSION_NUM >= 0x071400 /* Available since 7.20.0 */ case CURLOPT_MAIL_FROM: case CURLOPT_RTSP_STREAM_URI: case CURLOPT_RTSP_TRANSPORT: -#endif -#if LIBCURL_VERSION_NUM >= 0x071504 /* Available since 7.21.4 */ case CURLOPT_TLSAUTH_PASSWORD: case CURLOPT_TLSAUTH_USERNAME: -#endif -#if LIBCURL_VERSION_NUM >= 0x071506 /* Available since 7.21.6 */ case CURLOPT_ACCEPT_ENCODING: case CURLOPT_TRANSFER_ENCODING: -#else - case CURLOPT_ENCODING: -#endif -#if LIBCURL_VERSION_NUM >= 0x071800 /* Available since 7.24.0 */ case CURLOPT_DNS_SERVERS: -#endif -#if LIBCURL_VERSION_NUM >= 0x071900 /* Available since 7.25.0 */ case CURLOPT_MAIL_AUTH: -#endif #if LIBCURL_VERSION_NUM >= 0x072200 /* Available since 7.34.0 */ case CURLOPT_LOGIN_OPTIONS: #endif @@ -2302,9 +2210,7 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ case CURLOPT_FTPPORT: case CURLOPT_RANGE: case CURLOPT_FTP_ACCOUNT: -#if LIBCURL_VERSION_NUM >= 0x071400 /* Available since 7.20.0 */ case CURLOPT_RTSP_SESSION_ID: -#endif #if LIBCURL_VERSION_NUM >= 0x072100 /* Available since 7.33.0 */ case CURLOPT_DNS_INTERFACE: case CURLOPT_DNS_LOCAL_IP4: @@ -2452,12 +2358,8 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ case CURLOPT_PREQUOTE: case CURLOPT_QUOTE: case CURLOPT_TELNETOPTIONS: -#if LIBCURL_VERSION_NUM >= 0x071400 /* Available since 7.20.0 */ case CURLOPT_MAIL_RCPT: -#endif -#if LIBCURL_VERSION_NUM >= 0x071503 /* Available since 7.21.3 */ case CURLOPT_RESOLVE: -#endif #if LIBCURL_VERSION_NUM >= 0x072500 /* Available since 7.37.0 */ case CURLOPT_PROXYHEADER: #endif @@ -2492,16 +2394,12 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ case CURLOPT_TELNETOPTIONS: name = "CURLOPT_TELNETOPTIONS"; break; -#if LIBCURL_VERSION_NUM >= 0x071400 /* Available since 7.20.0 */ case CURLOPT_MAIL_RCPT: name = "CURLOPT_MAIL_RCPT"; break; -#endif -#if LIBCURL_VERSION_NUM >= 0x071503 /* Available since 7.21.3 */ case CURLOPT_RESOLVE: name = "CURLOPT_RESOLVE"; break; -#endif #if LIBCURL_VERSION_NUM >= 0x072500 /* Available since 7.37.0 */ case CURLOPT_PROXYHEADER: name = "CURLOPT_PROXYHEADER"; @@ -2547,12 +2445,10 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ case CURLOPT_FOLLOWLOCATION: lval = zend_is_true(zvalue); -#if LIBCURL_VERSION_NUM < 0x071304 if (lval && PG(open_basedir) && *PG(open_basedir)) { php_error_docref(NULL, E_WARNING, "CURLOPT_FOLLOWLOCATION cannot be activated when an open_basedir is set"); return FAILURE; } -#endif error = curl_easy_setopt(ch->cp, option, lval); break; @@ -2776,12 +2672,10 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ error = curl_easy_setopt(ch->cp, option, (curl_off_t)lval); break; -#if LIBCURL_VERSION_NUM >= 0x071301 /* Available since 7.19.1 */ case CURLOPT_POSTREDIR: lval = zval_get_long(zvalue); error = curl_easy_setopt(ch->cp, CURLOPT_POSTREDIR, lval & CURL_REDIR_POST_ALL); break; -#endif /* the following options deal with files, therefore the open_basedir check * is required. @@ -2793,13 +2687,9 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ case CURLOPT_NETRC_FILE: case CURLOPT_SSH_PRIVATE_KEYFILE: case CURLOPT_SSH_PUBLIC_KEYFILE: -#if LIBCURL_VERSION_NUM >= 0x071300 /* Available since 7.19.0 */ case CURLOPT_CRLFILE: case CURLOPT_ISSUERCERT: -#endif -#if LIBCURL_VERSION_NUM >= 0x071306 /* Available since 7.19.6 */ case CURLOPT_SSH_KNOWNHOSTS: -#endif { zend_string *tmp_str; zend_string *str = zval_get_tmp_string(zvalue, &tmp_str); @@ -2836,7 +2726,6 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ } break; -#if LIBCURL_VERSION_NUM >= 0x071500 /* Available since 7.21.0 */ case CURLOPT_FNMATCH_FUNCTION: curl_easy_setopt(ch->cp, CURLOPT_FNMATCH_FUNCTION, curl_fnmatch); curl_easy_setopt(ch->cp, CURLOPT_FNMATCH_DATA, ch); @@ -2849,7 +2738,6 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ ZVAL_COPY(&ch->handlers->fnmatch->func_name, zvalue); ch->handlers->fnmatch->method = PHP_CURL_USER; break; -#endif } @@ -3025,10 +2913,8 @@ PHP_FUNCTION(curl_getinfo) long as there's no 32-bit int overflow. */ long l_code; double d_code; -#if LIBCURL_VERSION_NUM > 0x071301 /* 7.19.1 */ struct curl_certinfo *ci = NULL; zval listcode; -#endif #if LIBCURL_VERSION_NUM >= 0x073d00 /* 7.61.0 */ curl_off_t co; #endif @@ -3101,24 +2987,17 @@ PHP_FUNCTION(curl_getinfo) if (curl_easy_getinfo(ch->cp, CURLINFO_REDIRECT_TIME, &d_code) == CURLE_OK) { CAAD("redirect_time", d_code); } -#if LIBCURL_VERSION_NUM >= 0x071202 /* Available since 7.18.2 */ if (curl_easy_getinfo(ch->cp, CURLINFO_REDIRECT_URL, &s_code) == CURLE_OK) { CAAS("redirect_url", s_code); } -#endif -#if LIBCURL_VERSION_NUM >= 0x071300 /* Available since 7.19.0 */ if (curl_easy_getinfo(ch->cp, CURLINFO_PRIMARY_IP, &s_code) == CURLE_OK) { CAAS("primary_ip", s_code); } -#endif -#if LIBCURL_VERSION_NUM >= 0x071301 /* Available since 7.19.1 */ if (curl_easy_getinfo(ch->cp, CURLINFO_CERTINFO, &ci) == CURLE_OK) { array_init(&listcode); create_certinfo(ci, &listcode); CAAZ("certinfo", &listcode); } -#endif -#if LIBCURL_VERSION_NUM >= 0x071500 /* Available since 7.21.0 */ if (curl_easy_getinfo(ch->cp, CURLINFO_PRIMARY_PORT, &l_code) == CURLE_OK) { CAAL("primary_port", l_code); } @@ -3128,7 +3007,6 @@ PHP_FUNCTION(curl_getinfo) if (curl_easy_getinfo(ch->cp, CURLINFO_LOCAL_PORT, &l_code) == CURLE_OK) { CAAL("local_port", l_code); } -#endif #if LIBCURL_VERSION_NUM >= 0x073200 /* Available since 7.50.0 */ if (curl_easy_getinfo(ch->cp, CURLINFO_HTTP_VERSION, &l_code) == CURLE_OK) { CAAL("http_version", l_code); @@ -3179,7 +3057,6 @@ PHP_FUNCTION(curl_getinfo) } else { RETURN_FALSE; } -#if LIBCURL_VERSION_NUM >= 0x071301 /* Available since 7.19.1 */ case CURLINFO_CERTINFO: { struct curl_certinfo *ci = NULL; @@ -3192,7 +3069,6 @@ PHP_FUNCTION(curl_getinfo) } break; } -#endif default: { int type = CURLINFO_TYPEMASK & option; switch (type) { @@ -3394,12 +3270,10 @@ static void _php_curl_close_ex(php_curl *ch) efree(ch->handlers->progress); } -#if LIBCURL_VERSION_NUM >= 0x071500 /* Available since 7.21.0 */ if (ch->handlers->fnmatch) { zval_ptr_dtor(&ch->handlers->fnmatch->func_name); efree(ch->handlers->fnmatch); } -#endif efree(ch->handlers); efree(ch); @@ -3472,13 +3346,11 @@ static void _php_curl_reset_handlers(php_curl *ch) ch->handlers->progress = NULL; } -#if LIBCURL_VERSION_NUM >= 0x071500 /* Available since 7.21.0 */ if (ch->handlers->fnmatch) { zval_ptr_dtor(&ch->handlers->fnmatch->func_name); efree(ch->handlers->fnmatch); ch->handlers->fnmatch = NULL; } -#endif } /* }}} */ @@ -3572,7 +3444,6 @@ PHP_FUNCTION(curl_unescape) } /* }}} */ -#if LIBCURL_VERSION_NUM >= 0x071200 /* 7.18.0 */ /* {{{ proto void curl_pause(resource ch, int bitmask) pause and unpause a connection */ PHP_FUNCTION(curl_pause) @@ -3593,6 +3464,5 @@ PHP_FUNCTION(curl_pause) RETURN_LONG(curl_easy_pause(ch->cp, bitmask)); } /* }}} */ -#endif #endif /* HAVE_CURL */ diff --git a/ext/curl/multi.c b/ext/curl/multi.c index e94bda9f60092..4b504a57e77af 100644 --- a/ext/curl/multi.c +++ b/ext/curl/multi.c @@ -183,18 +183,6 @@ PHP_FUNCTION(curl_multi_remove_handle) } /* }}} */ -#if LIBCURL_VERSION_NUM < 0x071c00 -static void _make_timeval_struct(struct timeval *to, double timeout) /* {{{ */ -{ - unsigned long conv; - - conv = (unsigned long) (timeout * 1000000.0); - to->tv_sec = conv / 1000000; - to->tv_usec = conv % 1000000; -} -/* }}} */ -#endif - /* {{{ proto int curl_multi_select(resource mh[, double timeout]) Get all the sockets associated with the cURL extension, which can then be "selected" */ PHP_FUNCTION(curl_multi_select) @@ -202,15 +190,7 @@ PHP_FUNCTION(curl_multi_select) zval *z_mh; php_curlm *mh; double timeout = 1.0; -#if LIBCURL_VERSION_NUM >= 0x071c00 /* Available since 7.28.0 */ int numfds = 0; -#else - fd_set readfds; - fd_set writefds; - fd_set exceptfds; - int maxfd; - struct timeval to; -#endif CURLMcode error = CURLM_OK; ZEND_PARSE_PARAMETERS_START(1,2) @@ -223,7 +203,6 @@ PHP_FUNCTION(curl_multi_select) return; } -#if LIBCURL_VERSION_NUM >= 0x071c00 /* Available since 7.28.0 */ error = curl_multi_wait(mh->multi, NULL, 0, (unsigned long) (timeout * 1000.0), &numfds); if (CURLM_OK != error) { SAVE_CURLM_ERROR(mh, error); @@ -231,21 +210,6 @@ PHP_FUNCTION(curl_multi_select) } RETURN_LONG(numfds); -#else - _make_timeval_struct(&to, timeout); - - FD_ZERO(&readfds); - FD_ZERO(&writefds); - FD_ZERO(&exceptfds); - - error = curl_multi_fdset(mh->multi, &readfds, &writefds, &exceptfds, &maxfd); - SAVE_CURLM_ERROR(mh, error); - - if (maxfd == -1) { - RETURN_LONG(-1); - } - RETURN_LONG(select(maxfd + 1, &readfds, &writefds, &exceptfds, &to)); -#endif } /* }}} */ From 2481133061d9884ff594500ec8f8ab1af79c3a51 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Thu, 16 Jan 2020 23:25:53 +0100 Subject: [PATCH 4/6] Fix bad removal of conditional code --- ext/curl/interface.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ext/curl/interface.c b/ext/curl/interface.c index b9fb0d33f0bce..7adc26b0625cb 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -2445,10 +2445,6 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ case CURLOPT_FOLLOWLOCATION: lval = zend_is_true(zvalue); - if (lval && PG(open_basedir) && *PG(open_basedir)) { - php_error_docref(NULL, E_WARNING, "CURLOPT_FOLLOWLOCATION cannot be activated when an open_basedir is set"); - return FAILURE; - } error = curl_easy_setopt(ch->cp, option, lval); break; From 6280e2419a8b318a1080ad5c82ca0b6e6a574ff8 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Thu, 16 Jan 2020 23:42:53 +0100 Subject: [PATCH 5/6] Adapt curl test suite Since we do not longer support libcurl < 7.29.0, these (parts of the) tests are no longer required. --- ext/curl/tests/bug45161.phpt | 49 --------------- ext/curl/tests/bug54995.phpt | 26 -------- ext/curl/tests/bug63363.phpt | 34 ----------- ext/curl/tests/bug63795.phpt | 4 -- ext/curl/tests/bug65646_open_basedir_new.phpt | 1 - ext/curl/tests/bug65646_open_basedir_old.phpt | 18 ------ ext/curl/tests/bug72189.phpt | 8 --- ext/curl/tests/curl_basic_016.phpt | 61 ------------------- ext/curl/tests/curl_basic_022.phpt | 7 +-- .../tests/curl_multi_errno_strerror_001.phpt | 4 -- .../tests/curl_multi_setopt_basic001.phpt | 4 -- ext/curl/tests/curl_multi_strerror_001.phpt | 4 -- .../tests/curl_share_errno_strerror_001.phpt | 4 -- ext/curl/tests/curl_strerror_001.phpt | 4 -- 14 files changed, 1 insertion(+), 227 deletions(-) delete mode 100644 ext/curl/tests/bug45161.phpt delete mode 100644 ext/curl/tests/bug54995.phpt delete mode 100644 ext/curl/tests/bug63363.phpt delete mode 100644 ext/curl/tests/bug65646_open_basedir_old.phpt delete mode 100644 ext/curl/tests/curl_basic_016.phpt diff --git a/ext/curl/tests/bug45161.phpt b/ext/curl/tests/bug45161.phpt deleted file mode 100644 index bf6f66977144c..0000000000000 --- a/ext/curl/tests/bug45161.phpt +++ /dev/null @@ -1,49 +0,0 @@ ---TEST-- -Bug #45161 (Reusing a curl handle leaks memory) ---SKIPIF-- -= 7.17.0"); -} -?> ---FILE-- - ---EXPECT-- -PASS diff --git a/ext/curl/tests/bug54995.phpt b/ext/curl/tests/bug54995.phpt deleted file mode 100644 index 02507497315cd..0000000000000 --- a/ext/curl/tests/bug54995.phpt +++ /dev/null @@ -1,26 +0,0 @@ ---TEST-- -Bug #54995 (Missing CURLINFO_RESPONSE_CODE support) ---SKIPIF-- - 0x070a08) { - exit("skip: tests works a versions of curl >= 7.10.8"); -} -?> ---FILE-- - ---EXPECT-- -bool(true) diff --git a/ext/curl/tests/bug63363.phpt b/ext/curl/tests/bug63363.phpt deleted file mode 100644 index 36abc5e0ae390..0000000000000 --- a/ext/curl/tests/bug63363.phpt +++ /dev/null @@ -1,34 +0,0 @@ ---TEST-- -Bug #63363 (CURL silently accepts boolean value for SSL_VERIFYHOST) ---SKIPIF-- -= 0x071c01) { - exit("skip: test valid for libcurl < 7.28.1"); -} -?> ---FILE-- - ---EXPECTF-- -bool(true) - -Notice: curl_setopt(): CURLOPT_SSL_VERIFYHOST with value 1 is deprecated and will be removed as of libcurl 7.28.1. It is recommended to use value 2 instead in %s on line %d -bool(true) -bool(true) - -Notice: curl_setopt(): CURLOPT_SSL_VERIFYHOST with value 1 is deprecated and will be removed as of libcurl 7.28.1. It is recommended to use value 2 instead in %s on line %d -bool(true) -bool(true) diff --git a/ext/curl/tests/bug63795.phpt b/ext/curl/tests/bug63795.phpt index 798faa68f92ad..6c5b6fa6f5c31 100644 --- a/ext/curl/tests/bug63795.phpt +++ b/ext/curl/tests/bug63795.phpt @@ -5,10 +5,6 @@ Bug #63795 (CURL >= 7.28.0 no longer support value 1 for CURLOPT_SSL_VERIFYHOST) if (!extension_loaded("curl")) { exit("skip curl extension not loaded"); } -$curl_version = curl_version(); -if ($curl_version['version_number'] < 0x071c01) { - exit("skip: test valid for libcurl >= 7.28.1"); -} ?> --FILE-- --FILE-- =')) exit("skip curl version is too new"); -?> ---FILE-- - ---EXPECTF-- -Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when an open_basedir is set in %s on line %d -bool(false) diff --git a/ext/curl/tests/bug72189.phpt b/ext/curl/tests/bug72189.phpt index 6723c2aae653a..2bd0ca370535d 100644 --- a/ext/curl/tests/bug72189.phpt +++ b/ext/curl/tests/bug72189.phpt @@ -2,15 +2,7 @@ Request #72189 (Add missing CURL_VERSION_* constants) --SKIPIF-- = 7.19.6'); -} - ?> --FILE-- ---SKIPIF-- - 0x071201) { - exit("skip: tests works only on older versions of curl"); -} -?> ---FILE-- - ---EXPECTF-- -array(2%d) { - ["url"]=> - string(0) "" - ["content_type"]=> - NULL - ["http_code"]=> - int(0) - ["header_size"]=> - int(0) - ["request_size"]=> - int(0) - ["filetime"]=> - int(0) - ["ssl_verify_result"]=> - int(0) - ["redirect_count"]=> - int(0) - ["total_time"]=> - float(0) - ["namelookup_time"]=> - float(0) - ["connect_time"]=> - float(0) - ["pretransfer_time"]=> - float(0) - ["size_upload"]=> - float(0) - ["size_download"]=> - float(0) - ["speed_download"]=> - float(0) - ["speed_upload"]=> - float(0) - ["download_content_length"]=> - float(%f) - ["upload_content_length"]=> - float(%f) - ["starttransfer_time"]=> - float(0) - ["redirect_time"]=> - float(0) -} diff --git a/ext/curl/tests/curl_basic_022.phpt b/ext/curl/tests/curl_basic_022.phpt index a01ca4f5c59b5..108b2904362e6 100644 --- a/ext/curl/tests/curl_basic_022.phpt +++ b/ext/curl/tests/curl_basic_022.phpt @@ -1,12 +1,7 @@ --TEST-- Test curl_getinfo() function with CURLINFO_COOKIELIST parameter --SKIPIF-- -= 7.14.1"); -} -?> + --FILE-- = 7.15.4"); -} ?> --FILE-- = 7.16.0"); -} ?> --FILE-- = 7.12.0"); -} ?> --FILE-- = 7.12.0"); -} ?> --FILE-- = 7.12.0"); -} ?> --FILE-- Date: Sat, 18 Jan 2020 10:05:07 +0100 Subject: [PATCH 6/6] Restore inadvertently deleted test case --- ext/curl/tests/bug45161.phpt | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 ext/curl/tests/bug45161.phpt diff --git a/ext/curl/tests/bug45161.phpt b/ext/curl/tests/bug45161.phpt new file mode 100644 index 0000000000000..2da0b7cde82e8 --- /dev/null +++ b/ext/curl/tests/bug45161.phpt @@ -0,0 +1,45 @@ +--TEST-- +Bug #45161 (Reusing a curl handle leaks memory) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +PASS