--- 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