From ccc95bf9dfc6b66447487ed1e2914c639967ecb1 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 20 Oct 2015 20:05:44 +0200 Subject: [PATCH 01/12] backport 262160e and 2d55e8c into 5.6 --- ext/opcache/shared_alloc_win32.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ext/opcache/shared_alloc_win32.c b/ext/opcache/shared_alloc_win32.c index cf4bce005d6..fd5d334269f 100644 --- a/ext/opcache/shared_alloc_win32.c +++ b/ext/opcache/shared_alloc_win32.c @@ -205,14 +205,19 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_ err = GetLastError(); if (ret == ALLOC_FAIL_MAPPING) { /* Mapping failed, wait for mapping object to get freed and retry */ - CloseHandle(memfile); + CloseHandle(memfile); memfile = NULL; + if (++map_retries >= MAX_MAP_RETRIES) { + break; + } + zend_shared_alloc_unlock_win32(); Sleep(1000 * (map_retries + 1)); + zend_shared_alloc_lock_win32(); } else { zend_shared_alloc_unlock_win32(); return ret; } - } while (++map_retries < MAX_MAP_RETRIES); + } while (1); if (map_retries == MAX_MAP_RETRIES) { zend_shared_alloc_unlock_win32(); From efd2b3f5f2943884507a33f6726703bd2200aad6 Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Wed, 21 Oct 2015 10:42:15 +0200 Subject: [PATCH 02/12] Update the certificates needed for the mysqli tests --- ext/mysqli/tests/cacert.pem | 92 +++++++++++++++++++++----- ext/mysqli/tests/client-cert.pem | 110 ++++++++++++++++++++----------- ext/mysqli/tests/client-key.pem | 38 +++++++---- 3 files changed, 175 insertions(+), 65 deletions(-) diff --git a/ext/mysqli/tests/cacert.pem b/ext/mysqli/tests/cacert.pem index e44341384e4..a0ba67444ef 100644 --- a/ext/mysqli/tests/cacert.pem +++ b/ext/mysqli/tests/cacert.pem @@ -1,17 +1,79 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 16263805969935345171 (0xe1b4a55c3ddfa613) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=SE, ST=Stockholm, L=Stockholm, O=Oracle, OU=MySQL, CN=CA + Validity + Not Before: Dec 5 04:48:11 2014 GMT + Not After : Dec 1 04:48:11 2030 GMT + Subject: C=SE, ST=Stockholm, L=Stockholm, O=Oracle, OU=MySQL, CN=CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b4:95:bd:24:92:73:06:22:01:13:28:0e:09:a3: + 94:05:96:54:9d:dc:8f:83:39:f3:64:7a:31:70:f6: + d9:c4:14:19:75:87:a6:b1:ea:52:ed:40:54:5a:f6: + 9c:13:8e:d8:76:8f:5a:65:a5:20:19:19:bd:51:9d: + ba:35:ce:9a:a9:58:0a:fc:11:6e:1d:cb:a8:f1:92: + 79:ee:aa:fc:e3:32:5e:aa:0d:0b:23:34:95:e9:d3: + 8e:3f:72:93:90:bc:2c:b0:04:75:4f:a4:4a:a0:32: + db:ac:89:ac:34:9b:d0:07:e3:81:e9:ca:5b:26:f0: + f5:de:fe:d5:5e:a0:54:26:dd:ec:58:07:6e:b9:e5: + 97:f6:20:6d:d8:4a:c0:50:cc:81:e6:d2:3f:c7:47: + 70:8b:15:89:65:71:2e:47:c3:42:76:b5:ee:16:0e: + 26:97:6a:a3:1c:ad:90:53:50:b0:b1:6d:1d:b0:b8: + 6d:df:3c:ee:bd:3b:87:e8:db:4d:3a:72:78:dd:db: + 40:3d:c9:20:46:b8:4e:33:bb:76:b7:4f:b2:79:da: + 03:cc:f9:75:c0:1d:4c:51:0a:b9:9b:25:34:50:11: + 97:df:82:46:02:a9:bc:98:51:3e:c3:df:57:ad:b7: + 28:be:de:65:ce:2b:f3:2c:22:f5:af:31:28:1c:ef: + 10:09 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: + 94:65:A1:A3:87:CF:BF:C1:74:BB:D8:84:97:B6:6B:EE:B2:90:73:B2 + X509v3 Authority Key Identifier: + keyid:94:65:A1:A3:87:CF:BF:C1:74:BB:D8:84:97:B6:6B:EE:B2:90:73:B2 + + X509v3 Basic Constraints: + CA:TRUE + Signature Algorithm: sha256WithRSAEncryption + 32:97:4c:af:bf:ca:e0:10:66:b7:cc:8b:0d:05:d1:d2:ca:b8: + 0c:c2:78:57:1f:f6:55:9c:74:fc:bd:31:58:05:18:bc:6d:b5: + 79:9a:22:8c:1f:da:33:ea:ef:db:e3:cb:46:bc:36:91:8b:d8: + 36:8d:06:40:c2:e9:fe:79:1b:4a:c5:70:74:6d:9d:92:2c:90: + be:3c:a7:88:03:e4:b7:ef:f4:b0:00:34:ec:8f:d1:c3:23:2b: + ef:bc:ff:ab:a2:0e:bc:ba:11:a5:8e:44:80:fa:d6:f4:26:66: + 84:64:2c:e3:23:62:0c:e2:ba:01:ab:5f:24:d6:9d:7e:9c:7b: + f4:5d:0e:ba:64:35:6e:a5:fa:98:0c:57:f3:72:e8:3e:2e:ce: + b3:f9:e3:fa:ee:aa:79:f9:06:01:19:b2:b3:28:ff:f4:d6:bb: + 17:bb:a6:a0:e0:45:23:f3:61:40:31:5c:a3:ee:88:1c:00:31: + 54:96:f9:71:37:b5:7f:66:6a:af:04:94:09:39:99:b3:88:86: + 9e:bb:d6:36:24:24:f4:37:2c:a6:6c:0b:35:2e:bb:40:af:a7: + 64:8a:7f:f2:74:e3:94:0c:32:bd:31:3d:d9:79:68:0f:1e:4b: + 17:c0:4e:df:85:3c:f0:84:df:58:f1:d2:4d:2f:ad:ff:1b:d7: + c8:9b:fe:dc -----BEGIN CERTIFICATE----- -MIICrTCCAhagAwIBAgIJAMI7xZKjhrDbMA0GCSqGSIb3DQEBBAUAMEQxCzAJBgNV -BAYTAlNFMRAwDgYDVQQIEwdVcHBzYWxhMRAwDgYDVQQHEwdVcHBzYWxhMREwDwYD -VQQKEwhNeVNRTCBBQjAeFw0xMDAxMjkxMTQ3MTBaFw0xNTAxMjgxMTQ3MTBaMEQx -CzAJBgNVBAYTAlNFMRAwDgYDVQQIEwdVcHBzYWxhMRAwDgYDVQQHEwdVcHBzYWxh -MREwDwYDVQQKEwhNeVNRTCBBQjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA -wQYsOEfrN4ESP3FjsI8cghE+tZVuyK2gck61lwieVxjgFMtBd65mI5a1y9pmlOI1 -yM4SB2Ppqcuw7/e1CdV1y7lvHrGNt5yqEHbN4QX1gvsN8TQauP/2WILturk4R4Hq -rKg0ZySu7f1Xhl0ed9a48LpaEHD17IcxWEGMMJwAxF0CAwEAAaOBpjCBozAMBgNV -HRMEBTADAQH/MB0GA1UdDgQWBBSvktYQ0ahLnyxyVKqty+WpBbBrDTB0BgNVHSME -bTBrgBSvktYQ0ahLnyxyVKqty+WpBbBrDaFIpEYwRDELMAkGA1UEBhMCU0UxEDAO -BgNVBAgTB1VwcHNhbGExEDAOBgNVBAcTB1VwcHNhbGExETAPBgNVBAoTCE15U1FM -IEFCggkAwjvFkqOGsNswDQYJKoZIhvcNAQEEBQADgYEAdKN1PjwMHAKG2Ww1145g -JQGBnKxSFOUaoSvkBi/4ntTM+ysnViWh7WvxyWjR9zU9arfr7aqsDeQxm0XDOqzj -AQ/cQIla2/Li8tXyfc06bisH/IHRaSc2zWqioTKbEwMdVOdrvq4a8V8ic3xYyIWn -7F4WeS07J8LKardSvM0+hOA= +MIIDmTCCAoGgAwIBAgIJAOG0pVw936YTMA0GCSqGSIb3DQEBCwUAMGMxCzAJBgNV +BAYTAlNFMRIwEAYDVQQIDAlTdG9ja2hvbG0xEjAQBgNVBAcMCVN0b2NraG9sbTEP +MA0GA1UECgwGT3JhY2xlMQ4wDAYDVQQLDAVNeVNRTDELMAkGA1UEAwwCQ0EwHhcN +MTQxMjA1MDQ0ODExWhcNMzAxMjAxMDQ0ODExWjBjMQswCQYDVQQGEwJTRTESMBAG +A1UECAwJU3RvY2tob2xtMRIwEAYDVQQHDAlTdG9ja2hvbG0xDzANBgNVBAoMBk9y +YWNsZTEOMAwGA1UECwwFTXlTUUwxCzAJBgNVBAMMAkNBMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAtJW9JJJzBiIBEygOCaOUBZZUndyPgznzZHoxcPbZ +xBQZdYemsepS7UBUWvacE47Ydo9aZaUgGRm9UZ26Nc6aqVgK/BFuHcuo8ZJ57qr8 +4zJeqg0LIzSV6dOOP3KTkLwssAR1T6RKoDLbrImsNJvQB+OB6cpbJvD13v7VXqBU +Jt3sWAduueWX9iBt2ErAUMyB5tI/x0dwixWJZXEuR8NCdrXuFg4ml2qjHK2QU1Cw +sW0dsLht3zzuvTuH6NtNOnJ43dtAPckgRrhOM7t2t0+yedoDzPl1wB1MUQq5myU0 +UBGX34JGAqm8mFE+w99Xrbcovt5lzivzLCL1rzEoHO8QCQIDAQABo1AwTjAdBgNV +HQ4EFgQUlGWho4fPv8F0u9iEl7Zr7rKQc7IwHwYDVR0jBBgwFoAUlGWho4fPv8F0 +u9iEl7Zr7rKQc7IwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAMpdM +r7/K4BBmt8yLDQXR0sq4DMJ4Vx/2VZx0/L0xWAUYvG21eZoijB/aM+rv2+PLRrw2 +kYvYNo0GQMLp/nkbSsVwdG2dkiyQvjyniAPkt+/0sAA07I/RwyMr77z/q6IOvLoR +pY5EgPrW9CZmhGQs4yNiDOK6AatfJNadfpx79F0OumQ1bqX6mAxX83LoPi7Os/nj ++u6qefkGARmysyj/9Na7F7umoOBFI/NhQDFco+6IHAAxVJb5cTe1f2ZqrwSUCTmZ +s4iGnrvWNiQk9DcspmwLNS67QK+nZIp/8nTjlAwyvTE92XloDx5LF8BO34U88ITf +WPHSTS+t/xvXyJv+3A== -----END CERTIFICATE----- diff --git a/ext/mysqli/tests/client-cert.pem b/ext/mysqli/tests/client-cert.pem index ee7f2ab281e..f60a0884178 100644 --- a/ext/mysqli/tests/client-cert.pem +++ b/ext/mysqli/tests/client-cert.pem @@ -1,46 +1,82 @@ Certificate: Data: - Version: 1 (0x0) - Serial Number: 1048577 (0x100001) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=SE, ST=Uppsala, L=Uppsala, O=MySQL AB + Version: 3 (0x2) + Serial Number: 16263805969935345173 (0xe1b4a55c3ddfa615) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=SE, ST=Stockholm, L=Stockholm, O=Oracle, OU=MySQL, CN=CA Validity - Not Before: Jan 29 11:50:22 2010 GMT - Not After : Jan 28 11:50:22 2015 GMT - Subject: C=SE, ST=Uppsala, O=MySQL AB + Not Before: Dec 5 04:49:23 2014 GMT + Not After : Dec 1 04:49:23 2029 GMT + Subject: C=SE, ST=Stockholm, L=Stockholm, O=Oracle, OU=MySQL, CN=Client Subject Public Key Info: Public Key Algorithm: rsaEncryption - Public-Key: (1024 bit) + Public-Key: (2048 bit) Modulus: - 00:cc:9a:37:49:13:66:dc:cf:e3:0b:13:a1:23:ed: - 78:db:4e:bd:11:f6:8c:0d:76:f9:a3:32:56:9a:f8: - a1:21:6a:55:4e:4d:3f:e6:67:9d:26:99:b2:cd:a4: - 9a:d2:2b:59:5c:d7:8a:d3:60:68:f8:18:bd:c5:be: - 15:e1:2a:3c:a3:d4:61:cb:f5:11:94:17:81:81:f7: - 87:8c:f6:6a:d2:ee:d8:e6:77:f6:62:66:4d:2e:16: - 8d:08:81:4a:c9:c6:4b:31:e5:b9:c7:8a:84:96:48: - a7:47:8c:0d:26:90:56:4e:e6:a5:6e:8c:b3:f2:9f: - fc:3d:78:9b:49:6e:86:83:77 + 00:c8:d1:a1:fe:a4:8c:f3:1b:17:71:1b:74:35:11: + e0:0e:6c:40:0a:fb:c0:f7:f0:eb:bb:c9:1d:a1:c7: + d7:b0:8a:f6:f1:cf:fa:6b:d0:79:64:eb:bb:69:a5: + 0d:80:06:df:52:14:d2:85:32:cf:bf:ce:2a:47:28: + 5b:cd:0b:28:ab:bb:07:33:d5:8b:d3:b4:72:c4:a6: + b5:cc:37:b9:03:a8:78:56:25:58:1f:17:30:7c:d1: + 0a:bb:ec:3c:a3:03:90:97:99:92:49:ae:b3:57:96: + 5c:1a:e9:e8:02:23:ae:c8:c9:05:50:63:e5:77:a1: + 9a:73:06:74:0e:46:50:28:d8:c9:4f:c4:1c:37:b8: + 52:18:0b:af:19:2b:d4:e5:66:74:a4:f3:f0:da:09: + 30:f7:bc:0c:c9:9b:ce:57:06:04:27:e5:a1:2f:2b: + a0:ba:b7:99:69:9d:46:fc:21:b6:45:81:9d:b2:3d: + 2f:76:15:78:b5:33:62:ac:1e:6b:66:dd:27:61:0a: + 47:02:20:2b:57:bb:32:20:dd:06:4c:76:a4:9b:72: + 42:4c:9c:2c:76:72:12:1f:4b:df:1e:11:1f:a9:06: + 54:dc:88:12:b0:49:d5:40:83:ef:7e:48:43:86:7a: + 37:a6:c1:d7:9b:fe:08:34:98:e0:54:3c:30:4f:79: + 15:29 Exponent: 65537 (0x10001) - Signature Algorithm: md5WithRSAEncryption - 5e:1f:a3:53:5f:24:13:1c:f8:28:32:b0:7f:69:69:f3:0e:c0: - 34:87:10:03:7d:da:15:8b:bd:19:b8:1a:56:31:e7:85:49:81: - c9:7f:45:20:74:3e:89:c0:e0:26:84:51:cc:04:16:ce:69:99: - 01:e1:26:99:b3:e3:f5:bd:ec:5f:a0:84:e4:38:da:75:78:7b: - 89:9c:d2:cd:60:95:20:ba:8e:e3:7c:e6:df:76:3a:7c:89:77: - 02:94:86:11:3a:c4:61:7d:6f:71:83:21:8a:17:fb:17:e2:ee: - 02:6b:61:c1:b4:52:63:d7:d8:46:b2:c5:9c:6f:38:91:8a:35: - 32:0b + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Netscape Comment: + OpenSSL Generated Certificate + X509v3 Subject Key Identifier: + 26:0C:90:BC:97:12:9E:43:BB:5E:FE:EB:A9:66:B3:C3:EE:B2:18:CB + X509v3 Authority Key Identifier: + keyid:94:65:A1:A3:87:CF:BF:C1:74:BB:D8:84:97:B6:6B:EE:B2:90:73:B2 + + Signature Algorithm: sha256WithRSAEncryption + 3e:3c:1f:6c:5b:83:d1:71:15:f5:45:52:fc:7f:67:bc:af:c5: + 92:f5:74:78:13:43:3c:fe:b5:61:bf:00:47:43:45:a0:b9:dd: + a1:10:0c:29:69:2a:6f:7d:67:3d:1e:09:b5:15:74:bf:73:11: + e6:e9:09:b6:6b:b5:cc:1e:06:fd:bd:3a:11:d3:44:bd:ca:7a: + a1:f1:09:43:fc:bf:83:89:3a:b1:18:40:f3:cf:6d:12:ef:6e: + 0c:b7:a4:99:03:8a:4f:0c:3c:2c:23:78:35:2a:99:ea:de:9c: + 1b:e8:8d:19:fb:44:80:13:89:81:c5:05:4b:a7:66:6b:c0:31: + 41:f0:6c:60:aa:ec:d3:4c:ff:c1:3b:d5:bb:0d:42:7d:37:5e: + 80:e7:9c:7e:60:90:0f:a4:4e:70:20:9c:b1:e4:1b:70:65:b0: + ef:bb:41:16:ed:ad:46:ce:34:d3:02:3d:dd:e2:50:fa:3c:5d: + f0:e2:71:f8:9a:ef:a3:32:25:c5:8e:64:f4:46:e1:f4:c0:69: + d2:34:56:8d:d9:c2:6e:b6:55:3b:6a:4d:b6:d2:84:ab:85:7b: + cb:fd:b4:73:40:ba:5d:49:e2:0d:39:77:17:01:49:bb:72:8b: + 3a:c9:b1:e2:cd:13:d2:9c:ce:7d:6c:a8:f0:32:c9:a4:af:56: + 6f:8a:e6:88 -----BEGIN CERTIFICATE----- -MIIB5zCCAVACAxAAATANBgkqhkiG9w0BAQQFADBEMQswCQYDVQQGEwJTRTEQMA4G -A1UECBMHVXBwc2FsYTEQMA4GA1UEBxMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwg -QUIwHhcNMTAwMTI5MTE1MDIyWhcNMTUwMTI4MTE1MDIyWjAyMQswCQYDVQQGEwJT -RTEQMA4GA1UECBMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwgQUIwgZ8wDQYJKoZI -hvcNAQEBBQADgY0AMIGJAoGBAMyaN0kTZtzP4wsToSPteNtOvRH2jA12+aMyVpr4 -oSFqVU5NP+ZnnSaZss2kmtIrWVzXitNgaPgYvcW+FeEqPKPUYcv1EZQXgYH3h4z2 -atLu2OZ39mJmTS4WjQiBSsnGSzHluceKhJZIp0eMDSaQVk7mpW6Ms/Kf/D14m0lu -hoN3AgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAXh+jU18kExz4KDKwf2lp8w7ANIcQ -A33aFYu9GbgaVjHnhUmByX9FIHQ+icDgJoRRzAQWzmmZAeEmmbPj9b3sX6CE5Dja -dXh7iZzSzWCVILqO43zm33Y6fIl3ApSGETrEYX1vcYMhihf7F+LuAmthwbRSY9fY -RrLFnG84kYo1Mgs= +MIIDyDCCArCgAwIBAgIJAOG0pVw936YVMA0GCSqGSIb3DQEBCwUAMGMxCzAJBgNV +BAYTAlNFMRIwEAYDVQQIDAlTdG9ja2hvbG0xEjAQBgNVBAcMCVN0b2NraG9sbTEP +MA0GA1UECgwGT3JhY2xlMQ4wDAYDVQQLDAVNeVNRTDELMAkGA1UEAwwCQ0EwHhcN +MTQxMjA1MDQ0OTIzWhcNMjkxMjAxMDQ0OTIzWjBnMQswCQYDVQQGEwJTRTESMBAG +A1UECAwJU3RvY2tob2xtMRIwEAYDVQQHDAlTdG9ja2hvbG0xDzANBgNVBAoMBk9y +YWNsZTEOMAwGA1UECwwFTXlTUUwxDzANBgNVBAMMBkNsaWVudDCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMjRof6kjPMbF3EbdDUR4A5sQAr7wPfw67vJ +HaHH17CK9vHP+mvQeWTru2mlDYAG31IU0oUyz7/OKkcoW80LKKu7BzPVi9O0csSm +tcw3uQOoeFYlWB8XMHzRCrvsPKMDkJeZkkmus1eWXBrp6AIjrsjJBVBj5XehmnMG +dA5GUCjYyU/EHDe4UhgLrxkr1OVmdKTz8NoJMPe8DMmbzlcGBCfloS8roLq3mWmd +RvwhtkWBnbI9L3YVeLUzYqwea2bdJ2EKRwIgK1e7MiDdBkx2pJtyQkycLHZyEh9L +3x4RH6kGVNyIErBJ1UCD735IQ4Z6N6bB15v+CDSY4FQ8ME95FSkCAwEAAaN7MHkw +CQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2Vy +dGlmaWNhdGUwHQYDVR0OBBYEFCYMkLyXEp5Du17+66lms8PushjLMB8GA1UdIwQY +MBaAFJRloaOHz7/BdLvYhJe2a+6ykHOyMA0GCSqGSIb3DQEBCwUAA4IBAQA+PB9s +W4PRcRX1RVL8f2e8r8WS9XR4E0M8/rVhvwBHQ0Wgud2hEAwpaSpvfWc9Hgm1FXS/ +cxHm6Qm2a7XMHgb9vToR00S9ynqh8QlD/L+DiTqxGEDzz20S724Mt6SZA4pPDDws +I3g1Kpnq3pwb6I0Z+0SAE4mBxQVLp2ZrwDFB8GxgquzTTP/BO9W7DUJ9N16A55x+ +YJAPpE5wIJyx5BtwZbDvu0EW7a1GzjTTAj3d4lD6PF3w4nH4mu+jMiXFjmT0RuH0 +wGnSNFaN2cJutlU7ak220oSrhXvL/bRzQLpdSeINOXcXAUm7cos6ybHizRPSnM59 +bKjwMsmkr1ZviuaI -----END CERTIFICATE----- diff --git a/ext/mysqli/tests/client-key.pem b/ext/mysqli/tests/client-key.pem index 205b5f31cb9..e0aae4f2c4a 100644 --- a/ext/mysqli/tests/client-key.pem +++ b/ext/mysqli/tests/client-key.pem @@ -1,15 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- From 8292260515a904b4d515484145c78f33a06ae1ae Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Wed, 21 Oct 2015 15:10:24 +0200 Subject: [PATCH 03/12] Fix for Bug #68344 MySQLi does not provide way to disable peer certificate validation --- ext/mysqli/tests/bug51647.phpt | 40 ++++++++++++++++++++++++++++++++++ ext/mysqlnd/mysqlnd_net.c | 8 ++++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/ext/mysqli/tests/bug51647.phpt b/ext/mysqli/tests/bug51647.phpt index 78540f1c33a..349d6dbbb01 100644 --- a/ext/mysqli/tests/bug51647.phpt +++ b/ext/mysqli/tests/bug51647.phpt @@ -65,9 +65,43 @@ $link->close(); } else { if (!$row = $res->fetch_assoc()) printf("[006] [%d] %s\n", $link->errno, $link->error); + if (!strlen($row["Value"])) + printf("[007] Empty cipher. No encrytion!"); } var_dump($row); + $link->close(); + + if (!is_object($link = mysqli_init())) + printf("[008] Cannot create link\n"); + + if (!my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket, MYSQLI_CLIENT_SSL)) { + printf("[009] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); + } + + if (!$res = $link->query('SHOW STATUS like "Ssl_cipher"')) { + if (1064 == $link->errno) { + /* ERROR 1064 (42000): You have an error in your SQL syntax; = sql strict mode */ + if ($res = $link->query("SHOW STATUS")) { + while ($row = $res->fetch_assoc()) + if ($row['Variable_name'] == 'Ssl_cipher') + break; + } else { + printf("[010] [%d] %s\n", $link->errno, $link->error); + } + } else { + printf("[011] [%d] %s\n", $link->errno, $link->error); + } + } else { + if (!$row = $res->fetch_assoc()) + printf("[012] [%d] %s\n", $link->errno, $link->error); + if (!strlen($row["Value"])) + printf("[013] Empty cipher. No encrytion!"); + } + + var_dump($row); + + $link->close(); print "done!"; ?> @@ -78,4 +112,10 @@ array(2) { ["Value"]=> string(%d) "%S" } +array(2) { + ["Variable_name"]=> + string(10) "Ssl_cipher" + ["Value"]=> + string(%d) "%S" +} done! diff --git a/ext/mysqlnd/mysqlnd_net.c b/ext/mysqlnd/mysqlnd_net.c index 69f4b7a54a3..4cbe9deb296 100644 --- a/ext/mysqlnd/mysqlnd_net.c +++ b/ext/mysqlnd/mysqlnd_net.c @@ -901,6 +901,12 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(MYSQLND_NET * const net TSRMLS_DC) zval verify_peer_zval; ZVAL_TRUE(&verify_peer_zval); php_stream_context_set_option(context, "ssl", "verify_peer", &verify_peer_zval); + php_stream_context_set_option(context, "ssl", "verify_peer_name", &verify_peer_zval); + } else { + zval verify_peer_zval; + ZVAL_FALSE(&verify_peer_zval); + php_stream_context_set_option(context, "ssl", "verify_peer", &verify_peer_zval); + php_stream_context_set_option(context, "ssl", "verify_peer_name", &verify_peer_zval); } if (net->data->options.ssl_cert) { zval cert_zval; @@ -918,7 +924,7 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(MYSQLND_NET * const net TSRMLS_DC) if (net->data->options.ssl_capath) { zval capath_zval; ZVAL_STRING(&capath_zval, net->data->options.ssl_capath, 0); - php_stream_context_set_option(context, "ssl", "cafile", &capath_zval); + php_stream_context_set_option(context, "ssl", "capath", &capath_zval); } if (net->data->options.ssl_passphrase) { zval passphrase_zval; From afd31489d0d9999f701467e99ef2b40794eed196 Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Thu, 22 Oct 2015 11:48:53 +0200 Subject: [PATCH 04/12] Improve fix for Bug #68344 MySQLi does not provide way to disable peer certificate validation --- ext/mysqli/mysqli.c | 3 +++ ext/mysqli/tests/mysqli_constants.phpt | 3 +++ ext/mysqlnd/mysqlnd_net.c | 9 ++------- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index e028d60ab0c..198ed831166 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -715,6 +715,9 @@ PHP_MINIT_FUNCTION(mysqli) REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_IGNORE_SPACE", CLIENT_IGNORE_SPACE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_NO_SCHEMA", CLIENT_NO_SCHEMA, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_FOUND_ROWS", CLIENT_FOUND_ROWS, CONST_CS | CONST_PERSISTENT); +#ifdef CLIENT_SSL_VERIFY_SERVER_CERT + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT", CLIENT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); +#endif #if (MYSQL_VERSION_ID >= 50611 && defined(CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS)) || defined(MYSQLI_USE_MYSQLND) REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS", CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS", MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT); diff --git a/ext/mysqli/tests/mysqli_constants.phpt b/ext/mysqli/tests/mysqli_constants.phpt index dd0f769e916..1cb31cc2a72 100644 --- a/ext/mysqli/tests/mysqli_constants.phpt +++ b/ext/mysqli/tests/mysqli_constants.phpt @@ -136,6 +136,9 @@ require_once('skipifconnectfailure.inc'); $expected_constants['MYSQLI_SERVER_QUERY_WAS_SLOW'] = true; } + if ($version >= 50033 || $IS_MYSQLND) { + $expected_constants['MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT'] = true; + } /* First introduced in MySQL 6.0, backported to MySQL 5.5 */ if ($version >= 50606 || $IS_MYSQLND) { diff --git a/ext/mysqlnd/mysqlnd_net.c b/ext/mysqlnd/mysqlnd_net.c index 4cbe9deb296..7b164ac2942 100644 --- a/ext/mysqlnd/mysqlnd_net.c +++ b/ext/mysqlnd/mysqlnd_net.c @@ -897,14 +897,9 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(MYSQLND_NET * const net TSRMLS_DC) ZVAL_STRING(&key_zval, net->data->options.ssl_key, 0); php_stream_context_set_option(context, "ssl", "local_pk", &key_zval); } - if (net->data->options.ssl_verify_peer) { + { zval verify_peer_zval; - ZVAL_TRUE(&verify_peer_zval); - php_stream_context_set_option(context, "ssl", "verify_peer", &verify_peer_zval); - php_stream_context_set_option(context, "ssl", "verify_peer_name", &verify_peer_zval); - } else { - zval verify_peer_zval; - ZVAL_FALSE(&verify_peer_zval); + ZVAL_BOOL(&verify_peer_zval, net->data->options.ssl_verify_peer); php_stream_context_set_option(context, "ssl", "verify_peer", &verify_peer_zval); php_stream_context_set_option(context, "ssl", "verify_peer_name", &verify_peer_zval); } From 22af88274b93c03fd9f9b0fb443abf6b586d947b Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Fri, 23 Oct 2015 13:56:40 +0200 Subject: [PATCH 05/12] Fix globals initialization in sapi/cgi Basically backport 8430ec17 --- sapi/cgi/cgi_main.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c index de1be31c416..1c0b489f28e 100644 --- a/sapi/cgi/cgi_main.c +++ b/sapi/cgi/cgi_main.c @@ -1493,11 +1493,6 @@ static void php_cgi_globals_ctor(php_cgi_globals_struct *php_cgi_globals TSRMLS_ */ static PHP_MINIT_FUNCTION(cgi) { -#ifdef ZTS - ts_allocate_id(&php_cgi_globals_id, sizeof(php_cgi_globals_struct), (ts_allocate_ctor) php_cgi_globals_ctor, NULL); -#else - php_cgi_globals_ctor(&php_cgi_globals TSRMLS_CC); -#endif REGISTER_INI_ENTRIES(); return SUCCESS; } @@ -1801,6 +1796,12 @@ int main(int argc, char *argv[]) tsrm_ls = ts_resource(0); #endif +#ifdef ZTS + ts_allocate_id(&php_cgi_globals_id, sizeof(php_cgi_globals_struct), (ts_allocate_ctor) php_cgi_globals_ctor, NULL); +#else + php_cgi_globals_ctor(&php_cgi_globals TSRMLS_CC); +#endif + sapi_startup(&cgi_sapi_module); fastcgi = fcgi_is_fastcgi(); cgi_sapi_module.php_ini_path_override = NULL; From 0e069fa57dc6e04064056778a6709e7115d84324 Mon Sep 17 00:00:00 2001 From: Nuno Lopes Date: Sat, 24 Oct 2015 17:38:20 -0400 Subject: [PATCH 06/12] exclude datelib from coverage report as asked by Derick --- Makefile.gcov | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.gcov b/Makefile.gcov index 8d30f34ae8c..e7c9c7054a8 100644 --- a/Makefile.gcov +++ b/Makefile.gcov @@ -57,7 +57,7 @@ php_lcov.info: lcov-test cp $$x.bbg lcov_data/$$y.bbg ; \ fi; \ done; \ - for dir in ext/bcmath/libbcmath ext/fileinfo/libmagic ext/gd/libgd ext/mbstring/libmbfl ext/mbstring/oniguruma ext/pcre/pcrelib ext/pdo_sqlite/libsqlite ext/sqlite/libsqlite ext/sqlite3/libsqlite ext/xmlrpc/libxmlrpc ext/zip/lib; do \ + for dir in ext/bcmath/libbcmath ext/date/lib ext/fileinfo/libmagic ext/gd/libgd ext/mbstring/libmbfl ext/mbstring/oniguruma ext/pcre/pcrelib ext/pdo_sqlite/libsqlite ext/sqlite3/libsqlite ext/xmlrpc/libxmlrpc ext/zip/lib; do \ if test -d lcov_data/$$dir; then \ rm -rf lcov_data/$$dir ; \ fi; \ From 36311ee4fd0ad33735ab0dc02f795b65888ca72d Mon Sep 17 00:00:00 2001 From: Nuno Lopes Date: Sat, 24 Oct 2015 18:12:24 -0400 Subject: [PATCH 07/12] unbreak coverage data: fix #line directives in phpdbg parser --- sapi/phpdbg/phpdbg_parser.c | 50 ++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/sapi/phpdbg/phpdbg_parser.c b/sapi/phpdbg/phpdbg_parser.c index 7d05da659e2..5537dfd330a 100644 --- a/sapi/phpdbg/phpdbg_parser.c +++ b/sapi/phpdbg/phpdbg_parser.c @@ -70,7 +70,7 @@ /* Copy the first part of user declarations. */ /* Line 371 of yacc.c */ -#line 1 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 1 "sapi/phpdbg/phpdbg_parser.y" /* @@ -129,7 +129,7 @@ extern int phpdbg_debug; #endif /* "%code requires" blocks. */ /* Line 387 of yacc.c */ -#line 31 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 31 "sapi/phpdbg/phpdbg_parser.y" #include "phpdbg.h" #ifndef YY_TYPEDEF_YY_SCANNER_T @@ -1453,25 +1453,25 @@ yyreduce: { case 3: /* Line 1802 of yacc.c */ -#line 67 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 67 "sapi/phpdbg/phpdbg_parser.y" { phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(1) - (1)])); } break; case 5: /* Line 1802 of yacc.c */ -#line 72 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 72 "sapi/phpdbg/phpdbg_parser.y" { phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(1) - (1)])); } break; case 6: /* Line 1802 of yacc.c */ -#line 73 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 73 "sapi/phpdbg/phpdbg_parser.y" { phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(2) - (2)])); } break; case 7: /* Line 1802 of yacc.c */ -#line 77 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 77 "sapi/phpdbg/phpdbg_parser.y" { (yyval).type = FILE_PARAM; (yyval).file.name = (yyvsp[(2) - (3)]).str; @@ -1481,7 +1481,7 @@ yyreduce: case 8: /* Line 1802 of yacc.c */ -#line 82 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 82 "sapi/phpdbg/phpdbg_parser.y" { (yyval).type = NUMERIC_FILE_PARAM; (yyval).file.name = (yyvsp[(1) - (4)]).str; @@ -1491,7 +1491,7 @@ yyreduce: case 9: /* Line 1802 of yacc.c */ -#line 87 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 87 "sapi/phpdbg/phpdbg_parser.y" { (yyval).type = FILE_PARAM; (yyval).file.name = malloc((yyvsp[(1) - (4)]).len + (yyvsp[(2) - (4)]).len + 1); @@ -1506,7 +1506,7 @@ yyreduce: case 10: /* Line 1802 of yacc.c */ -#line 97 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 97 "sapi/phpdbg/phpdbg_parser.y" { (yyval).type = NUMERIC_FILE_PARAM; (yyval).file.name = malloc((yyvsp[(1) - (5)]).len + (yyvsp[(2) - (5)]).len + 1); @@ -1521,7 +1521,7 @@ yyreduce: case 11: /* Line 1802 of yacc.c */ -#line 107 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 107 "sapi/phpdbg/phpdbg_parser.y" { (yyval).type = METHOD_PARAM; (yyval).method.class = (yyvsp[(1) - (3)]).str; @@ -1531,7 +1531,7 @@ yyreduce: case 12: /* Line 1802 of yacc.c */ -#line 112 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 112 "sapi/phpdbg/phpdbg_parser.y" { (yyval).type = NUMERIC_METHOD_PARAM; (yyval).method.class = (yyvsp[(1) - (5)]).str; @@ -1542,7 +1542,7 @@ yyreduce: case 13: /* Line 1802 of yacc.c */ -#line 118 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 118 "sapi/phpdbg/phpdbg_parser.y" { (yyval).type = NUMERIC_FUNCTION_PARAM; (yyval).str = (yyvsp[(1) - (3)]).str; @@ -1553,7 +1553,7 @@ yyreduce: case 14: /* Line 1802 of yacc.c */ -#line 124 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 124 "sapi/phpdbg/phpdbg_parser.y" { (yyval).type = COND_PARAM; (yyval).str = (yyvsp[(2) - (2)]).str; @@ -1563,49 +1563,49 @@ yyreduce: case 15: /* Line 1802 of yacc.c */ -#line 129 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 129 "sapi/phpdbg/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 16: /* Line 1802 of yacc.c */ -#line 130 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 130 "sapi/phpdbg/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 17: /* Line 1802 of yacc.c */ -#line 131 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 131 "sapi/phpdbg/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 18: /* Line 1802 of yacc.c */ -#line 132 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 132 "sapi/phpdbg/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 19: /* Line 1802 of yacc.c */ -#line 133 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 133 "sapi/phpdbg/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 20: /* Line 1802 of yacc.c */ -#line 134 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 134 "sapi/phpdbg/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 21: /* Line 1802 of yacc.c */ -#line 135 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 135 "sapi/phpdbg/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 22: /* Line 1802 of yacc.c */ -#line 139 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 139 "sapi/phpdbg/phpdbg_parser.y" { (yyval).type = EVAL_PARAM; (yyval).str = (yyvsp[(2) - (2)]).str; @@ -1615,7 +1615,7 @@ yyreduce: case 23: /* Line 1802 of yacc.c */ -#line 144 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 144 "sapi/phpdbg/phpdbg_parser.y" { (yyval).type = SHELL_PARAM; (yyval).str = (yyvsp[(2) - (2)]).str; @@ -1625,7 +1625,7 @@ yyreduce: case 24: /* Line 1802 of yacc.c */ -#line 149 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 149 "sapi/phpdbg/phpdbg_parser.y" { (yyval).type = RUN_PARAM; (yyval).len = 0; @@ -1634,7 +1634,7 @@ yyreduce: case 25: /* Line 1802 of yacc.c */ -#line 153 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 153 "sapi/phpdbg/phpdbg_parser.y" { (yyval).type = RUN_PARAM; (yyval).str = (yyvsp[(2) - (2)]).str; @@ -1876,7 +1876,7 @@ yyreturn: /* Line 2050 of yacc.c */ -#line 160 "/Users/Bob/php-src-5.6/sapi/phpdbg/phpdbg_parser.y" +#line 160 "sapi/phpdbg/phpdbg_parser.y" static int yyerror(void ***tsrm_ls, const char *msg) { From 83bfefeccbae59168a5e6baf6eaf34db0a0047e0 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 26 Oct 2015 15:54:29 +0100 Subject: [PATCH 08/12] Fixed bug #70718 stream_select() when OpenSSL extension is loaded on PHP Win64 --- ext/openssl/xp_ssl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c index e24d32cd45a..ea0c6cb18b5 100644 --- a/ext/openssl/xp_ssl.c +++ b/ext/openssl/xp_ssl.c @@ -2298,7 +2298,7 @@ static int php_openssl_sockop_cast(php_stream *stream, int castas, void **ret TS : stream->chunk_size); } - *(int *)ret = sslsock->s.socket; + *(php_socket_t *)ret = sslsock->s.socket; } return SUCCESS; From 2f7a8515ca7f3ab4b0640677e4f476f87642ff61 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 26 Oct 2015 15:56:34 +0100 Subject: [PATCH 09/12] update NEWS --- NEWS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/NEWS b/NEWS index f02b240831e..ad9ed260b8d 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,10 @@ PHP NEWS . Fixed bug #70748 (Segfault in ini_lex () at Zend/zend_ini_scanner.l). (Laruence) +- OpenSSL: + . Fixed bug #70718 (stream_select() when OpenSSL extension is loaded on + PHP Win64). (Anatol) + - PDO_DBlib: . Fixed bug #69757 (Segmentation fault on nextRowset). (miracle at rpz dot name) From 6d51b7b2e3468601acdaaf9041c9131b5aa47f98 Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Tue, 27 Oct 2015 12:59:09 +0100 Subject: [PATCH 10/12] Another Fix for Bug #68344 MySQLi does not provide way to disable peer certificate validation Added the possibility to explicitly state that the peer certificate should not be checked. Back to the default - checking the certificate. Exported MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT Usage : mysqli_real_connect( , , , , , MYSQLI_CLIENT_SSL | MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT) If mysqli_ssl_set() is not called, but only MYSQLI_CLIENT_SSL is passed, without the (don't) very flag, then no verification takes place. --- ext/mysqli/mysqli.c | 3 ++ ext/mysqli/tests/bug51647.phpt | 11 ++---- ext/mysqli/tests/bug55283.phpt | 2 +- ext/mysqli/tests/connect.inc | 11 +++--- ext/mysqli/tests/mysqli_constants.phpt | 3 ++ ext/mysqlnd/mysqlnd.c | 7 +++- ext/mysqlnd/mysqlnd_enum_n_def.h | 4 +++ ext/mysqlnd/mysqlnd_net.c | 50 ++++++++++++++++++++++---- ext/mysqlnd/mysqlnd_structs.h | 9 ++++- 9 files changed, 76 insertions(+), 24 deletions(-) diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index 198ed831166..5e40d191301 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -717,6 +717,9 @@ PHP_MINIT_FUNCTION(mysqli) REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_FOUND_ROWS", CLIENT_FOUND_ROWS, CONST_CS | CONST_PERSISTENT); #ifdef CLIENT_SSL_VERIFY_SERVER_CERT REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT", CLIENT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); +#if defined(MYSQLI_USE_MYSQLND) + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT", CLIENT_SSL_DONT_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); +#endif #endif #if (MYSQL_VERSION_ID >= 50611 && defined(CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS)) || defined(MYSQLI_USE_MYSQLND) REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS", CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT); diff --git a/ext/mysqli/tests/bug51647.phpt b/ext/mysqli/tests/bug51647.phpt index 349d6dbbb01..7385538fbbb 100644 --- a/ext/mysqli/tests/bug51647.phpt +++ b/ext/mysqli/tests/bug51647.phpt @@ -41,11 +41,7 @@ $link->close(); if (!is_object($link = mysqli_init())) printf("[001] Cannot create link\n"); - $path_to_pems = !$IS_MYSQLND? "ext/mysqli/tests/" : ""; - if (!$link->ssl_set("{$path_to_pems}client-key.pem", "{$path_to_pems}client-cert.pem", "{$path_to_pems}cacert.pem","","")) - printf("[002] [%d] %s\n", $link->errno, $link->error); - - if (!my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket)) { + if (!my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket, MYSQLI_CLIENT_SSL | MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT)) { printf("[003] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); } @@ -67,9 +63,9 @@ $link->close(); printf("[006] [%d] %s\n", $link->errno, $link->error); if (!strlen($row["Value"])) printf("[007] Empty cipher. No encrytion!"); + var_dump($row); } - var_dump($row); $link->close(); if (!is_object($link = mysqli_init())) @@ -97,10 +93,9 @@ $link->close(); printf("[012] [%d] %s\n", $link->errno, $link->error); if (!strlen($row["Value"])) printf("[013] Empty cipher. No encrytion!"); + var_dump($row); } - var_dump($row); - $link->close(); print "done!"; diff --git a/ext/mysqli/tests/bug55283.phpt b/ext/mysqli/tests/bug55283.phpt index d03daaee88e..a10c604fdd6 100644 --- a/ext/mysqli/tests/bug55283.phpt +++ b/ext/mysqli/tests/bug55283.phpt @@ -40,7 +40,7 @@ $link->close(); $db1 = new mysqli(); - $flags = MYSQLI_CLIENT_SSL; + $flags = MYSQLI_CLIENT_SSL | MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT; $link = mysqli_init(); mysqli_ssl_set($link, null, null, null, null, "RC4-MD5"); diff --git a/ext/mysqli/tests/connect.inc b/ext/mysqli/tests/connect.inc index 67ce60a48bd..606d1d32eb5 100644 --- a/ext/mysqli/tests/connect.inc +++ b/ext/mysqli/tests/connect.inc @@ -9,7 +9,7 @@ $driver = new mysqli_driver; $host = getenv("MYSQL_TEST_HOST") ? getenv("MYSQL_TEST_HOST") : "127.0.0.1"; - $port = getenv("MYSQL_TEST_PORT") ? getenv("MYSQL_TEST_PORT") : 3308; + $port = getenv("MYSQL_TEST_PORT") ? getenv("MYSQL_TEST_PORT") : 3306; $user = getenv("MYSQL_TEST_USER") ? getenv("MYSQL_TEST_USER") : "root"; $passwd = getenv("MYSQL_TEST_PASSWD") ? getenv("MYSQL_TEST_PASSWD") : ""; $db = getenv("MYSQL_TEST_DB") ? getenv("MYSQL_TEST_DB") : "test"; @@ -87,9 +87,8 @@ function my_mysqli_connect($host, $user, $passwd, $db, $port, $socket, $enable_env_flags = true) { global $connect_flags; - $flags = ($enable_env_flags) ? $connect_flags : false; - - if ($flags !== false) { + $flags = $enable_env_flags? $connect_flags:0; + if ($flags !== 0) { $link = mysqli_init(); if (!mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket, $flags)) $link = false; @@ -109,7 +108,7 @@ global $connect_flags; if ($enable_env_flags) - $flags & $connect_flags; + $flags = $flags | $connect_flags; return mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket, $flags); } @@ -118,7 +117,7 @@ public function __construct($host, $user, $passwd, $db, $port, $socket, $enable_env_flags = true) { global $connect_flags; - $flags = ($enable_env_flags) ? $connect_flags : false; + $flags = ($enable_env_flags) ? $connect_flags : 0; if ($flags !== false) { parent::init(); diff --git a/ext/mysqli/tests/mysqli_constants.phpt b/ext/mysqli/tests/mysqli_constants.phpt index 1cb31cc2a72..cc5fa9f1c42 100644 --- a/ext/mysqli/tests/mysqli_constants.phpt +++ b/ext/mysqli/tests/mysqli_constants.phpt @@ -139,6 +139,9 @@ require_once('skipifconnectfailure.inc'); if ($version >= 50033 || $IS_MYSQLND) { $expected_constants['MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT'] = true; } + if ($IS_MYSQLND) { + $expected_constants['MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT'] = true; + } /* First introduced in MySQL 6.0, backported to MySQL 5.5 */ if ($version >= 50606 || $IS_MYSQLND) { diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index f0089862273..94a314964d0 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -472,6 +472,7 @@ mysqlnd_switch_to_ssl_if_needed( DBG_INF_FMT("CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA= %d", mysql_flags & CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA? 1:0); DBG_INF_FMT("CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS= %d", mysql_flags & CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS? 1:0); DBG_INF_FMT("CLIENT_SESSION_TRACK= %d", mysql_flags & CLIENT_SESSION_TRACK? 1:0); + DBG_INF_FMT("CLIENT_SSL_DONT_VERIFY_SERVER_CERT= %d", mysql_flags & CLIENT_SSL_DONT_VERIFY_SERVER_CERT? 1:0); DBG_INF_FMT("CLIENT_SSL_VERIFY_SERVER_CERT= %d", mysql_flags & CLIENT_SSL_VERIFY_SERVER_CERT? 1:0); DBG_INF_FMT("CLIENT_REMEMBER_OPTIONS= %d", mysql_flags & CLIENT_REMEMBER_OPTIONS? 1:0); @@ -495,7 +496,11 @@ mysqlnd_switch_to_ssl_if_needed( if (server_has_ssl == FALSE) { goto close_conn; } else { - zend_bool verify = mysql_flags & CLIENT_SSL_VERIFY_SERVER_CERT? TRUE:FALSE; + enum mysqlnd_ssl_peer verify = mysql_flags & CLIENT_SSL_VERIFY_SERVER_CERT? + MYSQLND_SSL_PEER_VERIFY: + (mysql_flags & CLIENT_SSL_DONT_VERIFY_SERVER_CERT? + MYSQLND_SSL_PEER_DONT_VERIFY: + MYSQLND_SSL_PEER_DEFAULT); DBG_INF("Switching to SSL"); if (!PACKET_WRITE(auth_packet, conn)) { goto close_conn; diff --git a/ext/mysqlnd/mysqlnd_enum_n_def.h b/ext/mysqlnd/mysqlnd_enum_n_def.h index c1ede7e6562..9e29da29ddd 100644 --- a/ext/mysqlnd/mysqlnd_enum_n_def.h +++ b/ext/mysqlnd/mysqlnd_enum_n_def.h @@ -101,6 +101,10 @@ #define CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA (1UL << 21) /* Enable authentication response packet to be larger than 255 bytes. */ #define CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS (1UL << 22) /* Don't close the connection for a connection with expired password. */ #define CLIENT_SESSION_TRACK (1UL << 23) /* Extended OK */ +/* + This is a mysqlnd extension. CLIENT_ODBC is not used anyway. We will reuse it for our case and translate it to not using SSL peer verification +*/ +#define CLIENT_SSL_DONT_VERIFY_SERVER_CERT CLIENT_ODBC #define CLIENT_SSL_VERIFY_SERVER_CERT (1UL << 30) #define CLIENT_REMEMBER_OPTIONS (1UL << 31) diff --git a/ext/mysqlnd/mysqlnd_net.c b/ext/mysqlnd/mysqlnd_net.c index 7b164ac2942..3e8d0993fa1 100644 --- a/ext/mysqlnd/mysqlnd_net.c +++ b/ext/mysqlnd/mysqlnd_net.c @@ -798,8 +798,27 @@ MYSQLND_METHOD(mysqlnd_net, set_client_option)(MYSQLND_NET * const net, enum mys break; } case MYSQL_OPT_SSL_VERIFY_SERVER_CERT: - net->data->options.ssl_verify_peer = value? ((*(zend_bool *)value)? TRUE:FALSE): FALSE; + { + enum mysqlnd_ssl_peer val = *((enum mysqlnd_ssl_peer *)value); + switch (val) { + case MYSQLND_SSL_PEER_VERIFY: + DBG_INF("MYSQLND_SSL_PEER_VERIFY"); + break; + case MYSQLND_SSL_PEER_DONT_VERIFY: + DBG_INF("MYSQLND_SSL_PEER_DONT_VERIFY"); + break; + case MYSQLND_SSL_PEER_DEFAULT: + DBG_INF("MYSQLND_SSL_PEER_DEFAULT"); + val = MYSQLND_SSL_PEER_DEFAULT; + break; + default: + DBG_INF("default = MYSQLND_SSL_PEER_DEFAULT_ACTION"); + val = MYSQLND_SSL_PEER_DEFAULT; + break; + } + net->data->options.ssl_verify_peer = val; break; + } case MYSQL_OPT_READ_TIMEOUT: net->data->options.timeout_read = *(unsigned int*) value; break; @@ -886,6 +905,7 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(MYSQLND_NET * const net TSRMLS_DC) #ifdef MYSQLND_SSL_SUPPORTED php_stream_context * context = php_stream_context_alloc(TSRMLS_C); php_stream * net_stream = net->data->m.get_stream(net TSRMLS_CC); + zend_bool any_flag = FALSE; DBG_ENTER("mysqlnd_net::enable_ssl"); if (!context) { @@ -896,12 +916,7 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(MYSQLND_NET * const net TSRMLS_DC) zval key_zval; ZVAL_STRING(&key_zval, net->data->options.ssl_key, 0); php_stream_context_set_option(context, "ssl", "local_pk", &key_zval); - } - { - zval verify_peer_zval; - ZVAL_BOOL(&verify_peer_zval, net->data->options.ssl_verify_peer); - php_stream_context_set_option(context, "ssl", "verify_peer", &verify_peer_zval); - php_stream_context_set_option(context, "ssl", "verify_peer_name", &verify_peer_zval); + any_flag = TRUE; } if (net->data->options.ssl_cert) { zval cert_zval; @@ -910,27 +925,48 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(MYSQLND_NET * const net TSRMLS_DC) if (!net->data->options.ssl_key) { php_stream_context_set_option(context, "ssl", "local_pk", &cert_zval); } + any_flag = TRUE; } if (net->data->options.ssl_ca) { zval cafile_zval; ZVAL_STRING(&cafile_zval, net->data->options.ssl_ca, 0); php_stream_context_set_option(context, "ssl", "cafile", &cafile_zval); + any_flag = TRUE; } if (net->data->options.ssl_capath) { zval capath_zval; ZVAL_STRING(&capath_zval, net->data->options.ssl_capath, 0); php_stream_context_set_option(context, "ssl", "capath", &capath_zval); + any_flag = TRUE; } if (net->data->options.ssl_passphrase) { zval passphrase_zval; ZVAL_STRING(&passphrase_zval, net->data->options.ssl_passphrase, 0); php_stream_context_set_option(context, "ssl", "passphrase", &passphrase_zval); + any_flag = TRUE; } if (net->data->options.ssl_cipher) { zval cipher_zval; ZVAL_STRING(&cipher_zval, net->data->options.ssl_cipher, 0); php_stream_context_set_option(context, "ssl", "ciphers", &cipher_zval); + any_flag = TRUE; } + { + zval verify_peer_zval; + zend_bool verify; + + if (net->data->options.ssl_verify_peer == MYSQLND_SSL_PEER_DEFAULT) { + net->data->options.ssl_verify_peer = any_flag? MYSQLND_SSL_PEER_DEFAULT_ACTION:MYSQLND_SSL_PEER_DONT_VERIFY; + } + + verify = net->data->options.ssl_verify_peer == MYSQLND_SSL_PEER_VERIFY? TRUE:FALSE; + + DBG_INF_FMT("VERIFY=%d", verify); + ZVAL_BOOL(&verify_peer_zval, verify); + php_stream_context_set_option(context, "ssl", "verify_peer", &verify_peer_zval); + php_stream_context_set_option(context, "ssl", "verify_peer_name", &verify_peer_zval); + } + php_stream_context_set(net_stream, context); if (php_stream_xport_crypto_setup(net_stream, STREAM_CRYPTO_METHOD_TLS_CLIENT, NULL TSRMLS_CC) < 0 || php_stream_xport_crypto_enable(net_stream, 1 TSRMLS_CC) < 0) diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h index 170c977c2b8..f5d0b47a6f0 100644 --- a/ext/mysqlnd/mysqlnd_structs.h +++ b/ext/mysqlnd/mysqlnd_structs.h @@ -207,7 +207,13 @@ typedef struct st_mysqlnd_net_options char *ssl_capath; char *ssl_cipher; char *ssl_passphrase; - zend_bool ssl_verify_peer; + enum mysqlnd_ssl_peer { + MYSQLND_SSL_PEER_DEFAULT = 0, + MYSQLND_SSL_PEER_VERIFY = 1, + MYSQLND_SSL_PEER_DONT_VERIFY = 2, + +#define MYSQLND_SSL_PEER_DEFAULT_ACTION MYSQLND_SSL_PEER_VERIFY + } ssl_verify_peer; uint64_t flags; char * sha256_server_public_key; @@ -219,6 +225,7 @@ typedef struct st_mysqlnd_net_options } MYSQLND_NET_OPTIONS; + typedef struct st_mysqlnd_connection MYSQLND; typedef struct st_mysqlnd_connection_data MYSQLND_CONN_DATA; typedef struct st_mysqlnd_net MYSQLND_NET; From 06c6b51e7d680defdb1d2e718af7289b8b5fa600 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 29 Oct 2015 12:05:54 -0200 Subject: [PATCH 11/12] new tests to openssl module, don't covered yet. --- .../tests/openssl_get_cipher_methods.phpt | 16 ++++++++++++++++ ext/openssl/tests/openssl_get_md_methods.phpt | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 ext/openssl/tests/openssl_get_cipher_methods.phpt create mode 100644 ext/openssl/tests/openssl_get_md_methods.phpt diff --git a/ext/openssl/tests/openssl_get_cipher_methods.phpt b/ext/openssl/tests/openssl_get_cipher_methods.phpt new file mode 100644 index 00000000000..90c7e17c739 --- /dev/null +++ b/ext/openssl/tests/openssl_get_cipher_methods.phpt @@ -0,0 +1,16 @@ +--TEST-- +array openssl_get_cipher_methods ([ bool $aliases = false ] ); +--CREDITS-- +marcosptf - +--SKIPIF-- + +--FILE-- + +--EXPECT-- +bool(true) +bool(true) \ No newline at end of file diff --git a/ext/openssl/tests/openssl_get_md_methods.phpt b/ext/openssl/tests/openssl_get_md_methods.phpt new file mode 100644 index 00000000000..28f8abfe89c --- /dev/null +++ b/ext/openssl/tests/openssl_get_md_methods.phpt @@ -0,0 +1,16 @@ +--TEST-- +array openssl_get_md_methods ([ bool $aliases = false ] ); +--CREDITS-- +marcosptf - +--SKIPIF-- + +--FILE-- + +--EXPECT-- +bool(true) +bool(true) \ No newline at end of file From e62db721114f60c7e8a9ff8c3ddc38d5a40b84be Mon Sep 17 00:00:00 2001 From: Jakub Zelenka Date: Thu, 29 Oct 2015 19:11:57 +0000 Subject: [PATCH 12/12] Use standard title for new openssl tests --- ext/openssl/tests/openssl_get_cipher_methods.phpt | 4 ++-- ext/openssl/tests/openssl_get_md_methods.phpt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ext/openssl/tests/openssl_get_cipher_methods.phpt b/ext/openssl/tests/openssl_get_cipher_methods.phpt index 90c7e17c739..cae223f4c47 100644 --- a/ext/openssl/tests/openssl_get_cipher_methods.phpt +++ b/ext/openssl/tests/openssl_get_cipher_methods.phpt @@ -1,5 +1,5 @@ --TEST-- -array openssl_get_cipher_methods ([ bool $aliases = false ] ); +openssl_get_cipher_methods basic test --CREDITS-- marcosptf - --SKIPIF-- @@ -13,4 +13,4 @@ var_dump(is_array(openssl_get_cipher_methods(false))); ?> --EXPECT-- bool(true) -bool(true) \ No newline at end of file +bool(true) diff --git a/ext/openssl/tests/openssl_get_md_methods.phpt b/ext/openssl/tests/openssl_get_md_methods.phpt index 28f8abfe89c..b35e55d69f5 100644 --- a/ext/openssl/tests/openssl_get_md_methods.phpt +++ b/ext/openssl/tests/openssl_get_md_methods.phpt @@ -1,5 +1,5 @@ --TEST-- -array openssl_get_md_methods ([ bool $aliases = false ] ); +openssl_get_md_methods basic test --CREDITS-- marcosptf - --SKIPIF-- @@ -13,4 +13,4 @@ var_dump(is_array(openssl_get_md_methods(false))); ?> --EXPECT-- bool(true) -bool(true) \ No newline at end of file +bool(true)