Skip to content

Commit fa1b6ab

Browse files
committed
Fix GH-8430: OpenSSL compiled with old disgests does not build
Specifically no-md2, no-md4 or no-rmd160 were not supported
1 parent 845c6b3 commit fa1b6ab

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

NEWS

+4
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ PHP NEWS
1212
. Fixed bug GH-9763 (DateTimeZone ctr mishandles input and adds null byte if
1313
the argument is an offset larger than 100*60 minutes). (Derick)
1414

15+
- OpenSSL:
16+
. Fixed bug GH-8430 (OpenSSL compiled with no-md2, no-md4 or no-rmd160 does
17+
not build). (Jakub Zelenka, fsbruva)
18+
1519
- SOAP:
1620
. Fixed GH-9720 (Null pointer dereference while serializing the response).
1721
(cmb)

ext/openssl/openssl.c

+15-3
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,10 @@
6868

6969
#define OPENSSL_ALGO_SHA1 1
7070
#define OPENSSL_ALGO_MD5 2
71+
#ifndef OPENSSL_NO_MD4
7172
#define OPENSSL_ALGO_MD4 3
72-
#ifdef HAVE_OPENSSL_MD2_H
73+
#endif
74+
#ifndef OPENSSL_NO_MD2
7375
#define OPENSSL_ALGO_MD2 4
7476
#endif
7577
#if PHP_OPENSSL_API_VERSION < 0x10100
@@ -79,7 +81,9 @@
7981
#define OPENSSL_ALGO_SHA256 7
8082
#define OPENSSL_ALGO_SHA384 8
8183
#define OPENSSL_ALGO_SHA512 9
84+
#ifndef OPENSSL_NO_RMD160
8285
#define OPENSSL_ALGO_RMD160 10
86+
#endif
8387
#define DEBUG_SMIME 0
8488

8589
#if !defined(OPENSSL_NO_EC) && defined(EVP_PKEY_EC)
@@ -1104,10 +1108,12 @@ static EVP_MD * php_openssl_get_evp_md_from_algo(zend_long algo) { /* {{{ */
11041108
case OPENSSL_ALGO_MD5:
11051109
mdtype = (EVP_MD *) EVP_md5();
11061110
break;
1111+
#ifndef OPENSSL_NO_MD4
11071112
case OPENSSL_ALGO_MD4:
11081113
mdtype = (EVP_MD *) EVP_md4();
11091114
break;
1110-
#ifdef HAVE_OPENSSL_MD2_H
1115+
#endif
1116+
#ifndef OPENSSL_NO_MD2
11111117
case OPENSSL_ALGO_MD2:
11121118
mdtype = (EVP_MD *) EVP_md2();
11131119
break;
@@ -1129,9 +1135,11 @@ static EVP_MD * php_openssl_get_evp_md_from_algo(zend_long algo) { /* {{{ */
11291135
case OPENSSL_ALGO_SHA512:
11301136
mdtype = (EVP_MD *) EVP_sha512();
11311137
break;
1138+
#ifndef OPENSSL_NO_RMD160
11321139
case OPENSSL_ALGO_RMD160:
11331140
mdtype = (EVP_MD *) EVP_ripemd160();
11341141
break;
1142+
#endif
11351143
default:
11361144
return NULL;
11371145
break;
@@ -1279,8 +1287,10 @@ PHP_MINIT_FUNCTION(openssl)
12791287
/* digest algorithm constants */
12801288
REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA1", OPENSSL_ALGO_SHA1, CONST_CS|CONST_PERSISTENT);
12811289
REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD5", OPENSSL_ALGO_MD5, CONST_CS|CONST_PERSISTENT);
1290+
#ifndef OPENSSL_NO_MD4
12821291
REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD4", OPENSSL_ALGO_MD4, CONST_CS|CONST_PERSISTENT);
1283-
#ifdef HAVE_OPENSSL_MD2_H
1292+
#endif
1293+
#ifndef OPENSSL_NO_MD2
12841294
REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD2", OPENSSL_ALGO_MD2, CONST_CS|CONST_PERSISTENT);
12851295
#endif
12861296
#if PHP_OPENSSL_API_VERSION < 0x10100
@@ -1290,7 +1300,9 @@ PHP_MINIT_FUNCTION(openssl)
12901300
REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA256", OPENSSL_ALGO_SHA256, CONST_CS|CONST_PERSISTENT);
12911301
REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA384", OPENSSL_ALGO_SHA384, CONST_CS|CONST_PERSISTENT);
12921302
REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA512", OPENSSL_ALGO_SHA512, CONST_CS|CONST_PERSISTENT);
1303+
#ifndef OPENSSL_NO_RMD160
12931304
REGISTER_LONG_CONSTANT("OPENSSL_ALGO_RMD160", OPENSSL_ALGO_RMD160, CONST_CS|CONST_PERSISTENT);
1305+
#endif
12941306

12951307
/* flags for S/MIME */
12961308
REGISTER_LONG_CONSTANT("PKCS7_DETACHED", PKCS7_DETACHED, CONST_CS|CONST_PERSISTENT);

0 commit comments

Comments
 (0)