diff --git a/lang/php4/patches/110-openssl-1.0.0-compat.patch b/lang/php4/patches/110-openssl-1.0.0-compat.patch new file mode 100644 index 000000000..87ca85190 --- /dev/null +++ b/lang/php4/patches/110-openssl-1.0.0-compat.patch @@ -0,0 +1,72 @@ +--- a/ext/openssl/openssl.c ++++ b/ext/openssl/openssl.c +@@ -47,6 +47,13 @@ + + #define DEBUG_SMIME 0 + ++#if OPENSSL_VERSION_NUMBER >= 0x10000000L ++#define OPENSSL_D2I_X509_CAST d2i_of_void * ++#else ++#define OPENSSL_D2I_X509_CAST char *(*)() ++#define LHASH_OF(x) LHASH ++#endif ++ + static unsigned char arg2_force_ref[] = + { 2, BYREF_NONE, BYREF_FORCE }; + static unsigned char arg2and3_force_ref[] = +@@ -179,8 +186,8 @@ inline static int php_openssl_safe_mode_ + static char default_ssl_conf_filename[MAXPATHLEN]; + + struct php_x509_request { +- LHASH * global_config; /* Global SSL config */ +- LHASH * req_config; /* SSL config for this request */ ++ LHASH_OF(CONF_VALUE) * global_config; /* Global SSL config */ ++ LHASH_OF(CONF_VALUE) * req_config; /* SSL config for this request */ + const EVP_MD * md_alg; + const EVP_MD * digest; + char * section_name, +@@ -340,7 +347,7 @@ static inline int php_openssl_config_che + const char * section_label, + const char * config_filename, + const char * section, +- LHASH * config TSRMLS_DC) ++ LHASH_OF(CONF_VALUE) * config TSRMLS_DC) + { + X509V3_CTX ctx; + +@@ -720,7 +727,7 @@ static X509 * php_openssl_x509_from_zval + if (in == NULL) + return NULL; + +- cert = (X509 *) PEM_ASN1_read_bio((char *(*)())d2i_X509, ++ cert = (X509 *) PEM_ASN1_read_bio((OPENSSL_D2I_X509_CAST)d2i_X509, + PEM_STRING_X509, in, + NULL, NULL, NULL); + BIO_free(in); +@@ -1859,7 +1866,7 @@ static int php_openssl_is_private_key(EV + case EVP_PKEY_RSA2: + assert(pkey->pkey.rsa != NULL); + +- if (NULL == pkey->pkey.rsa->p || NULL == pkey->pkey.rsa->q) ++ if (NULL == pkey->pkey.rsa || NULL == pkey->pkey.rsa->p || NULL == pkey->pkey.rsa->q) + return 0; + break; + #endif +@@ -1871,7 +1878,7 @@ static int php_openssl_is_private_key(EV + case EVP_PKEY_DSA4: + assert(pkey->pkey.dsa != NULL); + +- if (NULL == pkey->pkey.dsa->p || NULL == pkey->pkey.dsa->q || NULL == pkey->pkey.dsa->priv_key) ++ if (NULL == pkey->pkey.dsa || NULL == pkey->pkey.dsa->p || NULL == pkey->pkey.dsa->q || NULL == pkey->pkey.dsa->priv_key) + return 0; + break; + #endif +@@ -1879,7 +1886,7 @@ static int php_openssl_is_private_key(EV + case EVP_PKEY_DH: + assert(pkey->pkey.dh != NULL); + +- if (NULL == pkey->pkey.dh->p || NULL == pkey->pkey.dh->priv_key) ++ if (NULL == pkey->pkey.dh || NULL == pkey->pkey.dh->p || NULL == pkey->pkey.dh->priv_key) + return 0; + break; + #endif