|
|
af9dc8 |
diff -up php-5.4.16/ext/openssl/openssl.c.cve6420 php-5.4.16/ext/openssl/openssl.c
|
|
|
af9dc8 |
--- php-5.4.16/ext/openssl/openssl.c.cve6420 2013-12-06 07:05:06.870106576 +0100
|
|
|
af9dc8 |
+++ php-5.4.16/ext/openssl/openssl.c 2013-12-06 07:05:06.872106575 +0100
|
|
|
af9dc8 |
@@ -656,18 +656,28 @@ static time_t asn1_time_to_time_t(ASN1_U
|
|
|
af9dc8 |
char * thestr;
|
|
|
af9dc8 |
long gmadjust = 0;
|
|
|
af9dc8 |
|
|
|
af9dc8 |
- if (timestr->length < 13) {
|
|
|
af9dc8 |
+ if (ASN1_STRING_type(timestr) != V_ASN1_UTCTIME) {
|
|
|
af9dc8 |
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "illegal ASN1 data type for timestamp");
|
|
|
af9dc8 |
+ return (time_t)-1;
|
|
|
af9dc8 |
+ }
|
|
|
af9dc8 |
+
|
|
|
af9dc8 |
+ if (ASN1_STRING_length(timestr) != strlen(ASN1_STRING_data(timestr))) {
|
|
|
af9dc8 |
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "illegal length in timestamp");
|
|
|
af9dc8 |
+ return (time_t)-1;
|
|
|
af9dc8 |
+ }
|
|
|
af9dc8 |
+
|
|
|
af9dc8 |
+ if (ASN1_STRING_length(timestr) < 13) {
|
|
|
af9dc8 |
php_error_docref(NULL TSRMLS_CC, E_WARNING, "extension author too lazy to parse %s correctly", timestr->data);
|
|
|
af9dc8 |
return (time_t)-1;
|
|
|
af9dc8 |
}
|
|
|
af9dc8 |
|
|
|
af9dc8 |
- strbuf = estrdup((char *)timestr->data);
|
|
|
af9dc8 |
+ strbuf = estrdup((char *)ASN1_STRING_data(timestr));
|
|
|
af9dc8 |
|
|
|
af9dc8 |
memset(&thetime, 0, sizeof(thetime));
|
|
|
af9dc8 |
|
|
|
af9dc8 |
/* we work backwards so that we can use atoi more easily */
|
|
|
af9dc8 |
|
|
|
af9dc8 |
- thestr = strbuf + timestr->length - 3;
|
|
|
af9dc8 |
+ thestr = strbuf + ASN1_STRING_length(timestr) - 3;
|
|
|
af9dc8 |
|
|
|
af9dc8 |
thetime.tm_sec = atoi(thestr);
|
|
|
af9dc8 |
*thestr = '\0';
|
|
|
af9dc8 |
diff -up php-5.4.16/ext/openssl/tests/cve-2013-6420.crt.cve6420 php-5.4.16/ext/openssl/tests/cve-2013-6420.crt
|
|
|
af9dc8 |
--- php-5.4.16/ext/openssl/tests/cve-2013-6420.crt.cve6420 2013-12-06 07:05:06.872106575 +0100
|
|
|
af9dc8 |
+++ php-5.4.16/ext/openssl/tests/cve-2013-6420.crt 2013-12-06 07:05:06.872106575 +0100
|
|
|
af9dc8 |
@@ -0,0 +1,29 @@
|
|
|
af9dc8 |
+-----BEGIN CERTIFICATE-----
|
|
|
af9dc8 |
+MIIEpDCCA4ygAwIBAgIJAJzu8r6u6eBcMA0GCSqGSIb3DQEBBQUAMIHDMQswCQYD
|
|
|
af9dc8 |
+VQQGEwJERTEcMBoGA1UECAwTTm9yZHJoZWluLVdlc3RmYWxlbjEQMA4GA1UEBwwH
|
|
|
af9dc8 |
+S8ODwrZsbjEUMBIGA1UECgwLU2VrdGlvbkVpbnMxHzAdBgNVBAsMFk1hbGljaW91
|
|
|
af9dc8 |
+cyBDZXJ0IFNlY3Rpb24xITAfBgNVBAMMGG1hbGljaW91cy5zZWt0aW9uZWlucy5k
|
|
|
af9dc8 |
+ZTEqMCgGCSqGSIb3DQEJARYbc3RlZmFuLmVzc2VyQHNla3Rpb25laW5zLmRlMHUY
|
|
|
af9dc8 |
+ZDE5NzAwMTAxMDAwMDAwWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
|
af9dc8 |
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
|
af9dc8 |
+AAAAAAAXDTE0MTEyODExMzkzNVowgcMxCzAJBgNVBAYTAkRFMRwwGgYDVQQIDBNO
|
|
|
af9dc8 |
+b3JkcmhlaW4tV2VzdGZhbGVuMRAwDgYDVQQHDAdLw4PCtmxuMRQwEgYDVQQKDAtT
|
|
|
af9dc8 |
+ZWt0aW9uRWluczEfMB0GA1UECwwWTWFsaWNpb3VzIENlcnQgU2VjdGlvbjEhMB8G
|
|
|
af9dc8 |
+A1UEAwwYbWFsaWNpb3VzLnNla3Rpb25laW5zLmRlMSowKAYJKoZIhvcNAQkBFhtz
|
|
|
af9dc8 |
+dGVmYW4uZXNzZXJAc2VrdGlvbmVpbnMuZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|
|
|
af9dc8 |
+DwAwggEKAoIBAQDDAf3hl7JY0XcFniyEJpSSDqn0OqBr6QP65usJPRt/8PaDoqBu
|
|
|
af9dc8 |
+wEYT/Na+6fsgPjC0uK9DZgWg2tHWWoanSblAMoz5PH6Z+S4SHRZ7e2dDIjPjdhjh
|
|
|
af9dc8 |
+0mLg2UMO5yp0V797Ggs9lNt6JRfH81MN2obXWs4NtztLMuD6egqpr8dDbr34aOs8
|
|
|
af9dc8 |
+pkdui5UawTZksy5pLPHq5cMhFGm06v65CLo0V2Pd9+KAokPrPcN5KLKebz7mLpk6
|
|
|
af9dc8 |
+SMeEXOKP4idEqxyQ7O7fBuHMedsQhu+prY3si3BUyKfQtP5CZnX2bp0wKHxX12DX
|
|
|
af9dc8 |
+1nfFIt9DbGvHTcyOuN+nZLPBm3vWxntyIIvVAgMBAAGjQjBAMAkGA1UdEwQCMAAw
|
|
|
af9dc8 |
+EQYJYIZIAYb4QgEBBAQDAgeAMAsGA1UdDwQEAwIFoDATBgNVHSUEDDAKBggrBgEF
|
|
|
af9dc8 |
+BQcDAjANBgkqhkiG9w0BAQUFAAOCAQEAG0fZYYCTbdj1XYc+1SnoaPR+vI8C8CaD
|
|
|
af9dc8 |
+8+0UYhdnyU4gga0BAcDrY9e94eEAu6ZqycF6FjLqXXdAboppWocr6T6GD1x33Ckl
|
|
|
af9dc8 |
+VArzG/KxQohGD2JeqkhIMlDomxHO7ka39+Oa8i2vWLVyjU8AZvWMAruHa4EENyG7
|
|
|
af9dc8 |
+lW2AagaFKFCr9TnXTfrdxGVEbv7KVQ6bdhg5p5SjpWH1+Mq03uR3ZXPBYdyV8319
|
|
|
af9dc8 |
+o0lVj1KFI2DCL/liWisJRoof+1cR35Ctd0wYBcpB6TZslMcOPl76dwKwJgeJo2Qg
|
|
|
af9dc8 |
+Zsfmc2vC1/qOlNuNq/0TzzkVGv8ETT3CgaU+UXe4XOVvkccebJn2dg==
|
|
|
af9dc8 |
+-----END CERTIFICATE-----
|
|
|
af9dc8 |
+
|
|
|
af9dc8 |
+
|
|
|
af9dc8 |
diff -up php-5.4.16/ext/openssl/tests/cve-2013-6420.phpt.cve6420 php-5.4.16/ext/openssl/tests/cve-2013-6420.phpt
|
|
|
af9dc8 |
--- php-5.4.16/ext/openssl/tests/cve-2013-6420.phpt.cve6420 2013-12-06 07:05:06.872106575 +0100
|
|
|
af9dc8 |
+++ php-5.4.16/ext/openssl/tests/cve-2013-6420.phpt 2013-12-06 07:05:06.872106575 +0100
|
|
|
af9dc8 |
@@ -0,0 +1,18 @@
|
|
|
af9dc8 |
+--TEST--
|
|
|
af9dc8 |
+CVE-2013-6420
|
|
|
af9dc8 |
+--SKIPIF--
|
|
|
af9dc8 |
+
|
|
|
af9dc8 |
+if (!extension_loaded("openssl")) die("skip");
|
|
|
af9dc8 |
+?>
|
|
|
af9dc8 |
+--FILE--
|
|
|
af9dc8 |
+
|
|
|
af9dc8 |
+$crt = substr(__FILE__, 0, -4).'.crt';
|
|
|
af9dc8 |
+$info = openssl_x509_parse("file://$crt");
|
|
|
af9dc8 |
+var_dump($info['issuer']['emailAddress'], $info["validFrom_time_t"]);
|
|
|
af9dc8 |
+?>
|
|
|
af9dc8 |
+Done
|
|
|
af9dc8 |
+--EXPECTF--
|
|
|
af9dc8 |
+%s openssl_x509_parse(): illegal ASN1 data type for timestamp in %s/cve-2013-6420.php on line 3
|
|
|
af9dc8 |
+string(27) "stefan.esser@sektioneins.de"
|
|
|
af9dc8 |
+int(-1)
|
|
|
af9dc8 |
+Done
|