From 47699a24e6fe9b9f2654d4f2537cfdb7c089b27f Mon Sep 17 00:00:00 2001
From: Nikita Popov <nikita.ppv@gmail.com>
Date: Sat, 3 Feb 2018 21:02:52 +0100
Subject: [PATCH] Bump libcurl requirement to 7.15.5

The existence of the following functions is now guaranteed:
 * curl_escape()
 * curl_unescape()
 * curl_multi_setopt()

libcurl 7.15.5 has been released 11.5 years ago and is available
even in RHEL 5.
---
 UPGRADING                   |   2 +-
 ext/curl/config.m4          |  12 ++--
 ext/curl/interface.c        | 136 ++++--------------------------------
 ext/curl/multi.c            |   2 -
 ext/curl/php_curl.h         |   3 -
 ext/curl/sync-constants.php |   6 +-
 6 files changed, 23 insertions(+), 138 deletions(-)

diff --git a/UPGRADING b/UPGRADING
index 5aee1ed5a9..ccf3bc4bba 100644
--- a/UPGRADING
+++ b/UPGRADING
@@ -148,7 +148,7 @@ JSON:
 ========================================
 
  Curl:
-  . libcurl >= 7.12.1 is now required
+  . libcurl >= 7.15.5 is now required.
 
  FTP:
   . Set default transfer mode to binary
diff --git a/ext/curl/config.m4 b/ext/curl/config.m4
index ce977e2a06..134c7b1684 100644
--- a/ext/curl/config.m4
+++ b/ext/curl/config.m4
@@ -30,12 +30,12 @@ if test "$PHP_CURL" != "no"; then
   fi
 
   if test -n "$PKNAME"; then
-    AC_MSG_CHECKING(for cURL 7.12.1 or greater)
-    if $PKG_CONFIG --atleast-version 7.10.5 $PKNAME; then
+    AC_MSG_CHECKING(for cURL 7.15.5 or greater)
+    if $PKG_CONFIG --atleast-version 7.15.5 $PKNAME; then
       curl_version_full=`$PKG_CONFIG --modversion $PKNAME`
       AC_MSG_RESULT($curl_version_full)
     else
-      AC_MSG_ERROR(cURL version 7.12.1 or later is required to compile php with cURL support)
+      AC_MSG_ERROR(cURL version 7.15.5 or later is required to compile php with cURL support)
     fi
 
     CURL_LIBS=`$PKG_CONFIG --libs   $PKNAME`
@@ -65,7 +65,7 @@ if test "$PHP_CURL" != "no"; then
     fi
 
     CURL_CONFIG="curl-config"
-    AC_MSG_CHECKING(for cURL 7.12.1 or greater)
+    AC_MSG_CHECKING(for cURL 7.15.5 or greater)
 
     if ${CURL_DIR}/bin/curl-config --libs > /dev/null 2>&1; then
       CURL_CONFIG=${CURL_DIR}/bin/curl-config
@@ -77,13 +77,13 @@ if test "$PHP_CURL" != "no"; then
 
     curl_version_full=`$CURL_CONFIG --version`
     curl_version=`echo ${curl_version_full} | sed -e 's/libcurl //' | $AWK 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
-    if test "$curl_version" -ge 7012001; then
+    if test "$curl_version" -ge 7015005; then
       AC_MSG_RESULT($curl_version_full)
       CURL_LIBS=`$CURL_CONFIG --libs`
       CURL_INCL=`$CURL_CONFIG --cflags`
       CURL_SSL=`$CURL_CONFIG --feature | $EGREP SSL`
     else
-      AC_MSG_ERROR(cURL version 7.12.1 or later is required to compile php with cURL support)
+      AC_MSG_ERROR(cURL version 7.15.5 or later is required to compile php with cURL support)
     fi
   fi
 
diff --git a/ext/curl/interface.c b/ext/curl/interface.c
index b4c0bddf1d..13d2075d90 100644
--- a/ext/curl/interface.c
+++ b/ext/curl/interface.c
@@ -347,7 +347,6 @@ ZEND_BEGIN_ARG_INFO(arginfo_curl_reset, 0)
 	ZEND_ARG_INFO(0, ch)
 ZEND_END_ARG_INFO()
 
-#if LIBCURL_VERSION_NUM > 0x070f03 /* 7.15.4 */
 ZEND_BEGIN_ARG_INFO(arginfo_curl_escape, 0)
 	ZEND_ARG_INFO(0, ch)
 	ZEND_ARG_INFO(0, str)
@@ -363,7 +362,6 @@ ZEND_BEGIN_ARG_INFO(arginfo_curl_multi_setopt, 0)
 	ZEND_ARG_INFO(0, option)
 	ZEND_ARG_INFO(0, value)
 ZEND_END_ARG_INFO()
-#endif
 
 ZEND_BEGIN_ARG_INFO(arginfo_curl_multi_init, 0)
 ZEND_END_ARG_INFO()
@@ -465,10 +463,8 @@ static const zend_function_entry curl_functions[] = {
 	PHP_FE(curl_multi_strerror,      arginfo_curl_multi_strerror)
 	PHP_FE(curl_share_strerror,      arginfo_curl_share_strerror)
 	PHP_FE(curl_reset,               arginfo_curl_reset)
-#if LIBCURL_VERSION_NUM >= 0x070f04 /* 7.15.4 */
 	PHP_FE(curl_escape,              arginfo_curl_escape)
 	PHP_FE(curl_unescape,            arginfo_curl_unescape)
-#endif
 #if LIBCURL_VERSION_NUM >= 0x071200 /* 7.18.0 */
 	PHP_FE(curl_pause,               arginfo_curl_pause)
 #endif
@@ -481,9 +477,7 @@ static const zend_function_entry curl_functions[] = {
 	PHP_FE(curl_multi_info_read,     arginfo_curl_multi_info_read)
 	PHP_FE(curl_multi_close,         arginfo_curl_multi_close)
 	PHP_FE(curl_multi_errno,         arginfo_curl_multi_errno)
-#if LIBCURL_VERSION_NUM >= 0x070f04 /* 7.15.4 */
 	PHP_FE(curl_multi_setopt,        arginfo_curl_multi_setopt)
-#endif
 	PHP_FE(curl_share_init,          arginfo_curl_share_init)
 	PHP_FE(curl_share_close,         arginfo_curl_share_close)
 	PHP_FE(curl_share_setopt,        arginfo_curl_share_setopt)
@@ -546,9 +540,7 @@ PHP_MINFO_FUNCTION(curl)
 
 		static const struct feat feats[] = {
 			{"AsynchDNS", CURL_VERSION_ASYNCHDNS},
-#if LIBCURL_VERSION_NUM >= 0x070f04 /* 7.15.4 */
 			{"CharConv", CURL_VERSION_CONV},
-#endif
 			{"Debug", CURL_VERSION_DEBUG},
 			{"GSS-Negotiate", CURL_VERSION_GSSNEGOTIATE},
 			{"IDN", CURL_VERSION_IDN},
@@ -562,9 +554,7 @@ PHP_MINFO_FUNCTION(curl)
 #endif
 			{"SPNEGO", CURL_VERSION_SPNEGO},
 			{"SSL",  CURL_VERSION_SSL},
-#if LIBCURL_VERSION_NUM >= 0x070d02 /* 7.13.2 */
 			{"SSPI",  CURL_VERSION_SSPI},
-#endif
 #if LIBCURL_VERSION_NUM >= 0x071504 /* 7.21.4 */
 			{"TLS-SRP", CURL_VERSION_TLSAUTH_SRP},
 #endif
@@ -942,61 +932,50 @@ PHP_MINIT_FUNCTION(curl)
 	/* Available since 7.11.2 */
 	REGISTER_CURL_CONSTANT(CURLOPT_TCP_NODELAY);
 
-#if LIBCURL_VERSION_NUM >= 0x070c02 /* Available since 7.12.2 */
+	/* Available since 7.12.2 */
 	REGISTER_CURL_CONSTANT(CURLFTPAUTH_DEFAULT);
 	REGISTER_CURL_CONSTANT(CURLFTPAUTH_SSL);
 	REGISTER_CURL_CONSTANT(CURLFTPAUTH_TLS);
 	REGISTER_CURL_CONSTANT(CURLOPT_FTPSSLAUTH);
-#endif
 
-#if LIBCURL_VERSION_NUM >= 0x070d00 /* Available since 7.13.0 */
+	/* Available since 7.13.0 */
 	REGISTER_CURL_CONSTANT(CURLOPT_FTP_ACCOUNT);
-#endif
 
-#if LIBCURL_VERSION_NUM >= 0x070c02 /* Available since 7.12.2 */
+	/* Available since 7.12.2 */
 	REGISTER_CURL_CONSTANT(CURLINFO_OS_ERRNO);
-#endif
 
-#if LIBCURL_VERSION_NUM >= 0x070c03 /* Available since 7.12.3 */
+	/* Available since 7.12.3 */
 	REGISTER_CURL_CONSTANT(CURLINFO_NUM_CONNECTS);
 	REGISTER_CURL_CONSTANT(CURLINFO_SSL_ENGINES);
-#endif
 
-#if LIBCURL_VERSION_NUM >= 0x070e01 /* Available since 7.14.1 */
+	/* Available since 7.14.1 */
 	REGISTER_CURL_CONSTANT(CURLINFO_COOKIELIST);
 	REGISTER_CURL_CONSTANT(CURLOPT_COOKIELIST);
 	REGISTER_CURL_CONSTANT(CURLOPT_IGNORE_CONTENT_LENGTH);
-#endif
 
-#if LIBCURL_VERSION_NUM >= 0x070f00 /* Available since 7.15.0 */
+	/* Available since 7.15.0 */
 	REGISTER_CURL_CONSTANT(CURLOPT_FTP_SKIP_PASV_IP);
-#endif
 
-#if LIBCURL_VERSION_NUM >= 0x070f01 /* Available since 7.15.1 */
+	/* Available since 7.15.1 */
 	REGISTER_CURL_CONSTANT(CURLOPT_FTP_FILEMETHOD);
-#endif
 
-#if LIBCURL_VERSION_NUM >= 0x070f02 /* Available since 7.15.2 */
+	/* Available since 7.15.2 */
 	REGISTER_CURL_CONSTANT(CURLOPT_CONNECT_ONLY);
 	REGISTER_CURL_CONSTANT(CURLOPT_LOCALPORT);
 	REGISTER_CURL_CONSTANT(CURLOPT_LOCALPORTRANGE);
-#endif
 
-#if LIBCURL_VERSION_NUM >= 0x070f03 /* Available since 7.15.3 */
+	/* Available since 7.15.3 */
 	REGISTER_CURL_CONSTANT(CURLFTPMETHOD_MULTICWD);
 	REGISTER_CURL_CONSTANT(CURLFTPMETHOD_NOCWD);
 	REGISTER_CURL_CONSTANT(CURLFTPMETHOD_SINGLECWD);
-#endif
 
-#if LIBCURL_VERSION_NUM >= 0x070f04 /* Available since 7.15.4 */
+	/* Available since 7.15.4 */
 	REGISTER_CURL_CONSTANT(CURLINFO_FTP_ENTRY_PATH);
-#endif
 
-#if LIBCURL_VERSION_NUM >= 0x070f05 /* Available since 7.15.5 */
+	/* Available since 7.15.5 */
 	REGISTER_CURL_CONSTANT(CURLOPT_FTP_ALTERNATIVE_TO_USER);
 	REGISTER_CURL_CONSTANT(CURLOPT_MAX_RECV_SPEED_LARGE);
 	REGISTER_CURL_CONSTANT(CURLOPT_MAX_SEND_SPEED_LARGE);
-#endif
 
 #if LIBCURL_VERSION_NUM >= 0x071000 /* Available since 7.16.0 */
 	REGISTER_CURL_CONSTANT(CURLE_SSL_CACERT_BADFILE);
@@ -1349,15 +1328,6 @@ PHP_MINIT_FUNCTION(curl)
 	REGISTER_CURL_CONSTANT(CURLOPT_REQUEST_TARGET);
 #endif
 
-#if CURLOPT_FTPASCII != 0
-	REGISTER_CURL_CONSTANT(CURLOPT_FTPASCII);
-#endif
-#if CURLOPT_MUTE != 0
-	REGISTER_CURL_CONSTANT(CURLOPT_MUTE);
-#endif
-#if CURLOPT_PASSWDFUNCTION != 0
-	REGISTER_CURL_CONSTANT(CURLOPT_PASSWDFUNCTION);
-#endif
 	REGISTER_CURL_CONSTANT(CURLOPT_SAFE_UPLOAD);
 
 #ifdef PHP_CURL_NEED_OPENSSL_TSL
@@ -1739,46 +1709,6 @@ static int curl_debug(CURL *cp, curl_infotype type, char *buf, size_t buf_len, v
 }
 /* }}} */
 
-#if CURLOPT_PASSWDFUNCTION != 0
-/* {{{ curl_passwd
- */
-static size_t curl_passwd(void *ctx, char *prompt, char *buf, int buflen)
-{
-	php_curl *ch = (php_curl *) ctx;
-	zval *func = &ch->handlers->passwd;
-	zval  argv[3];
-	zval  retval;
-	int   error;
-	int   ret = -1;
-
-	GC_ADDREF(ch->res);
-	ZVAL_RES(&argv[0], ch->res);
-	ZVAL_STRING(&argv[1], prompt);
-	ZVAL_LONG(&argv[2], buflen);
-
-	error = call_user_function(EG(function_table), NULL, func, &retval, 2, argv);
-	if (error == FAILURE) {
-		php_error_docref(NULL, E_WARNING, "Could not call the CURLOPT_PASSWDFUNCTION");
-	} else if (Z_TYPE(retval) == IS_STRING) {
-		if (Z_STRLEN(retval) > buflen) {
-			php_error_docref(NULL, E_WARNING, "Returned password is too long for libcurl to handle");
-		} else {
-			memcpy(buf, Z_STRVAL(retval), Z_STRLEN(retval) + 1);
-		}
-	} else {
-		php_error_docref(NULL, E_WARNING, "User handler '%s' did not return a string", Z_STRVAL_P(func));
-	}
-
-	zval_ptr_dtor(&argv[0]);
-	zval_ptr_dtor(&argv[1]);
-	zval_ptr_dtor(&argv[2]);
-	zval_ptr_dtor(&retval);
-
-	return ret;
-}
-/* }}} */
-#endif
-
 /* {{{ curl_free_string
  */
 static void curl_free_string(void **string)
@@ -2160,23 +2090,13 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
 		case CURLOPT_IPRESOLVE:
 		case CURLOPT_MAXFILESIZE:
 		case CURLOPT_TCP_NODELAY:
-#if LIBCURL_VERSION_NUM >= 0x070c02 /* Available since 7.12.2 */
 		case CURLOPT_FTPSSLAUTH:
-#endif
-#if LIBCURL_VERSION_NUM >= 0x070e01 /* Available since 7.14.1 */
 		case CURLOPT_IGNORE_CONTENT_LENGTH:
-#endif
-#if LIBCURL_VERSION_NUM >= 0x070f00 /* Available since 7.15.0 */
 		case CURLOPT_FTP_SKIP_PASV_IP:
-#endif
-#if LIBCURL_VERSION_NUM >= 0x070f01 /* Available since 7.15.1 */
 		case CURLOPT_FTP_FILEMETHOD:
-#endif
-#if LIBCURL_VERSION_NUM >= 0x070f02 /* Available since 7.15.2 */
 		case CURLOPT_CONNECT_ONLY:
 		case CURLOPT_LOCALPORT:
 		case CURLOPT_LOCALPORTRANGE:
-#endif
 #if LIBCURL_VERSION_NUM >= 0x071000 /* Available since 7.16.0 */
 		case CURLOPT_SSL_SESSIONID_CACHE:
 #endif
@@ -2196,13 +2116,10 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
 #endif
 #if LIBCURL_VERSION_NUM >= 0x071100 /* Available since 7.17.0 */
 		case CURLOPT_USE_SSL:
-#elif LIBCURL_VERSION_NUM >= 0x070b00 /* Available since 7.11.0 */
-		case CURLOPT_FTP_SSL:
-#endif
-#if LIBCURL_VERSION_NUM >= 0x071100 /* Available since 7.17.0 */
 		case CURLOPT_APPEND:
 		case CURLOPT_DIRLISTONLY:
 #else
+		case CURLOPT_FTP_SSL:
 		case CURLOPT_FTPAPPEND:
 		case CURLOPT_FTPLISTONLY:
 #endif
@@ -2274,12 +2191,9 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
 #endif
 #if LIBCURL_VERSION_NUM >= 0x073100 /* Available since 7.49.0 */
 		case CURLOPT_TCP_FASTOPEN:
-#endif
-#if CURLOPT_MUTE != 0
-		case CURLOPT_MUTE:
 #endif
 			lval = zval_get_long(zvalue);
-#if LIBCURL_VERSION_NUM >= 0x71304
+#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");
@@ -2319,12 +2233,8 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
 		case CURLOPT_SSL_CIPHER_LIST:
 		case CURLOPT_USERAGENT:
 		case CURLOPT_USERPWD:
-#if LIBCURL_VERSION_NUM >= 0x070e01 /* Available since 7.14.1 */
 		case CURLOPT_COOKIELIST:
-#endif
-#if LIBCURL_VERSION_NUM >= 0x070f05 /* Available since 7.15.5 */
 		case CURLOPT_FTP_ALTERNATIVE_TO_USER:
-#endif
 #if LIBCURL_VERSION_NUM >= 0x071101 /* Available since 7.17.1 */
 		case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5:
 #endif
@@ -2387,9 +2297,7 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
 		case CURLOPT_CUSTOMREQUEST:
 		case CURLOPT_FTPPORT:
 		case CURLOPT_RANGE:
-#if LIBCURL_VERSION_NUM >= 0x070d00 /* Available since 7.13.0 */
 		case CURLOPT_FTP_ACCOUNT:
-#endif
 #if LIBCURL_VERSION_NUM >= 0x071400 /* Available since 7.20.0 */
 		case CURLOPT_RTSP_SESSION_ID:
 #endif
@@ -2816,13 +2724,11 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
 			ch->handlers->write->method = PHP_CURL_USER;
 			break;
 
-#if LIBCURL_VERSION_NUM >= 0x070f05 /* Available since 7.15.5 */
 		case CURLOPT_MAX_RECV_SPEED_LARGE:
 		case CURLOPT_MAX_SEND_SPEED_LARGE:
 			lval = zval_get_long(zvalue);
 			error = curl_easy_setopt(ch->cp, option, (curl_off_t)lval);
 			break;
-#endif
 
 #if LIBCURL_VERSION_NUM >= 0x071301 /* Available since 7.19.1 */
 		case CURLOPT_POSTREDIR:
@@ -2831,15 +2737,6 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
 			break;
 #endif
 
-#if CURLOPT_PASSWDFUNCTION != 0
-		case CURLOPT_PASSWDFUNCTION:
-			zval_ptr_dtor(&ch->handlers->passwd);
-			ZVAL_COPY(&ch->handlers->passwd, zvalue);
-			error = curl_easy_setopt(ch->cp, CURLOPT_PASSWDFUNCTION, curl_passwd);
-			error = curl_easy_setopt(ch->cp, CURLOPT_PASSWDDATA,     (void *) ch);
-			break;
-#endif
-
 		/* the following options deal with files, therefore the open_basedir check
 		 * is required.
 		 */
@@ -3246,7 +3143,6 @@ PHP_FUNCTION(curl_getinfo)
 						}
 						break;
 					}
-#if LIBCURL_VERSION_NUM >= 0x070c03 /* Available since 7.12.3 */
 					case CURLINFO_SLIST:
 					{
 						struct curl_slist *slist;
@@ -3262,7 +3158,6 @@ PHP_FUNCTION(curl_getinfo)
 						}
 						break;
 					}
-#endif
 					default:
 						RETURN_FALSE;
 				}
@@ -3377,9 +3272,6 @@ static void _php_curl_close_ex(php_curl *ch)
 	zval_ptr_dtor(&ch->handlers->write->func_name);
 	zval_ptr_dtor(&ch->handlers->read->func_name);
 	zval_ptr_dtor(&ch->handlers->write_header->func_name);
-#if CURLOPT_PASSWDFUNCTION != 0
-	zval_ptr_dtor(&ch->handlers->passwd);
-#endif
 	zval_ptr_dtor(&ch->handlers->std_err);
 	if (ch->header.str) {
 		zend_string_release(ch->header.str);
@@ -3513,7 +3405,6 @@ PHP_FUNCTION(curl_reset)
 }
 /* }}} */
 
-#if LIBCURL_VERSION_NUM > 0x070f03 /* 7.15.4 */
 /* {{{ proto void curl_escape(resource ch, string str)
    URL encodes the given string */
 PHP_FUNCTION(curl_escape)
@@ -3576,7 +3467,6 @@ PHP_FUNCTION(curl_unescape)
 	}
 }
 /* }}} */
-#endif
 
 #if LIBCURL_VERSION_NUM >= 0x071200 /* 7.18.0 */
 /* {{{ proto void curl_pause(resource ch, int bitmask)
diff --git a/ext/curl/multi.c b/ext/curl/multi.c
index 707384f7e5..d728309c4b 100644
--- a/ext/curl/multi.c
+++ b/ext/curl/multi.c
@@ -531,7 +531,6 @@ static int _php_server_push_callback(CURL *parent_ch, CURL *easy, size_t num_hea
 
 #endif
 
-#if LIBCURL_VERSION_NUM >= 0x070f04 /* 7.15.4 */
 static int _php_curl_multi_setopt(php_curlm *mh, zend_long option, zval *zvalue, zval *return_value) /* {{{ */
 {
 	CURLMcode error = CURLM_OK;
@@ -615,7 +614,6 @@ PHP_FUNCTION(curl_multi_setopt)
 	}
 }
 /* }}} */
-#endif
 
 #endif
 
diff --git a/ext/curl/php_curl.h b/ext/curl/php_curl.h
index 0c08bab266..bc78e1a520 100644
--- a/ext/curl/php_curl.h
+++ b/ext/curl/php_curl.h
@@ -150,9 +150,6 @@ typedef struct {
 	php_curl_write    *write;
 	php_curl_write    *write_header;
 	php_curl_read     *read;
-#if CURLOPT_PASSWDFUNCTION != 0
-	zval               passwd;
-#endif
 	zval               std_err;
 	php_curl_progress *progress;
 #if LIBCURL_VERSION_NUM >= 0x071500 /* Available since 7.21.0 */
diff --git a/ext/curl/sync-constants.php b/ext/curl/sync-constants.php
index b7f8919571..093483ed9c 100644
--- a/ext/curl/sync-constants.php
+++ b/ext/curl/sync-constants.php
@@ -11,7 +11,7 @@ const CURL_DOC_FILE = 'https://curl.haxx.se/libcurl/c/symbols-in-versions.html';
 
 const SOURCE_FILE = __DIR__ . '/interface.c';
 
-const MIN_SUPPORTED_CURL_VERSION = '7.12.1';
+const MIN_SUPPORTED_CURL_VERSION = '7.15.5';
 
 const IGNORED_CONSTANTS = [
     'CURLOPT_PROGRESSDATA'
@@ -28,7 +28,7 @@ foreach ($curlConstants as $name => [$introduced, $deprecated, $removed]) {
     $inPHP = in_array($name, $sourceConstants);
 
     if ($removed !== null) {
-        if (version_compare($removed, MIN_SUPPORTED_CURL_VERSION) < 0) {
+        if (version_compare($removed, MIN_SUPPORTED_CURL_VERSION) <= 0) {
             // constant removed before the minimum supported version
             continue;
         }
@@ -51,7 +51,7 @@ foreach ($sourceConstants as $name) {
         continue;
     }
 
-    if (version_compare($removed, MIN_SUPPORTED_CURL_VERSION) < 0) {
+    if (version_compare($removed, MIN_SUPPORTED_CURL_VERSION) <= 0) {
         // constant removed before the minimum supported version
         $outdated[$name] = $removed;
     }
-- 
2.40.0