at: bump version
[feed/packages.git] / lang / php7-pecl-http / patches / 200-string_or_null_register.patch
1 From ab5b4e3acd2b0379e5d8bc95a8d4f83ce5c91fb7 Mon Sep 17 00:00:00 2001
2 From: Michael Heimpold <mhei@heimpold.de>
3 Date: Sun, 4 Jun 2017 15:00:33 +0200
4 Subject: [PATCH] Handle NULL strings gracefully during constant registration
5
6 When libcurl is compiled not using e.g. libz or SSL, then a call to
7 curl_version_info could return NULL in the corresponding fields of
8 curl_version_info_data.
9
10 Passing such NULL pointers down to REGISTER_NS_STRING_CONSTANT results
11 in a segfault during php startup, so let's check for this special case
12 and register a NULL constant in this case.
13
14 Signed-off-by: Michael Heimpold <mhei@heimpold.de>
15 ---
16 src/php_http_client_curl.c | 16 ++++++++++++----
17 1 file changed, 12 insertions(+), 4 deletions(-)
18
19 diff --git a/src/php_http_client_curl.c b/src/php_http_client_curl.c
20 index f286324..f07bb8f 100644
21 --- a/src/php_http_client_curl.c
22 +++ b/src/php_http_client_curl.c
23 @@ -2429,6 +2429,14 @@ php_http_client_ops_t *php_http_client_curl_get_ops(void)
24 return &php_http_client_curl_ops;
25 }
26
27 +#define REGISTER_NS_STRING_OR_NULL_CONSTANT(ns, name, str, flags) \
28 + do { \
29 + if ((str) != NULL) { \
30 + REGISTER_NS_STRING_CONSTANT(ns, name, str, flags); \
31 + } else { \
32 + REGISTER_NS_NULL_CONSTANT(ns, name, flags); \
33 + } \
34 + } while (0)
35
36 PHP_MINIT_FUNCTION(http_client_curl)
37 {
38 @@ -2509,12 +2517,12 @@ PHP_MINIT_FUNCTION(http_client_curl)
39 REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl", "VERSIONS", curl_version(), CONST_CS|CONST_PERSISTENT);
40 #if CURLVERSION_NOW >= 0
41 REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "CURL", (char *) info->version, CONST_CS|CONST_PERSISTENT);
42 - REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "SSL", (char *) info->ssl_version, CONST_CS|CONST_PERSISTENT);
43 - REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "LIBZ", (char *) info->libz_version, CONST_CS|CONST_PERSISTENT);
44 + REGISTER_NS_STRING_OR_NULL_CONSTANT("http\\Client\\Curl\\Versions", "SSL", (char *) info->ssl_version, CONST_CS|CONST_PERSISTENT);
45 + REGISTER_NS_STRING_OR_NULL_CONSTANT("http\\Client\\Curl\\Versions", "LIBZ", (char *) info->libz_version, CONST_CS|CONST_PERSISTENT);
46 # if CURLVERSION_NOW >= 1
47 - REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "ARES", (char *) info->ares, CONST_CS|CONST_PERSISTENT);
48 + REGISTER_NS_STRING_OR_NULL_CONSTANT("http\\Client\\Curl\\Versions", "ARES", (char *) info->ares, CONST_CS|CONST_PERSISTENT);
49 # if CURLVERSION_NOW >= 2
50 - REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "IDN", (char *) info->libidn, CONST_CS|CONST_PERSISTENT);
51 + REGISTER_NS_STRING_OR_NULL_CONSTANT("http\\Client\\Curl\\Versions", "IDN", (char *) info->libidn, CONST_CS|CONST_PERSISTENT);
52 # endif
53 # endif
54 #endif
55 --
56 2.7.4
57