summaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-devtools/php/php/CVE-2015-7804.patch
blob: ad211a373e1d9f3b380c593c5b10f50cb10135f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
From e78ac461dbefb7c4a3e9fde78d50fbc56b7b0183 Mon Sep 17 00:00:00 2001
From: Stanislav Malyshev <stas@php.net>
Date: Mon, 28 Sep 2015 17:12:35 -0700
Subject: [PATCH] FIx bug #70433 - Uninitialized pointer in phar_make_dirstream
 when zip entry filename is "/"

Upstream-status: Backport

https://git.php.net/?p=php-src.git;a=patch;h=e78ac461dbefb7c4a3e9fde78d50fbc56b7b0183

CVE: CVE-2015-7804
Signed-off-by: Armin Kuster <akuster@mvista.com>

---
 ext/phar/dirstream.c         |   2 +-
 ext/phar/tests/bug70433.phpt |  23 +++++++++++++++++++++++
 ext/phar/tests/bug70433.zip  | Bin 0 -> 264 bytes
 3 files changed, 24 insertions(+), 1 deletion(-)
 create mode 100644 ext/phar/tests/bug70433.phpt
 create mode 100755 ext/phar/tests/bug70433.zip

Index: php-5.5.21/ext/phar/dirstream.c
===================================================================
--- php-5.5.21.orig/ext/phar/dirstream.c
+++ php-5.5.21/ext/phar/dirstream.c
@@ -207,7 +207,7 @@ static php_stream *phar_make_dirstream(c
 	zend_hash_internal_pointer_reset(manifest);
 
 	while (FAILURE != zend_hash_has_more_elements(manifest)) {
-		if (HASH_KEY_NON_EXISTENT == zend_hash_get_current_key_ex(manifest, &key, &keylen, &unused, 0, NULL)) {
+		if (HASH_KEY_IS_STRING != zend_hash_get_current_key_ex(manifest, &key, &keylen, &unused, 0, NULL)) {
 			break;
 		}
 
Index: php-5.5.21/ext/phar/tests/bug70433.phpt
===================================================================
--- /dev/null
+++ php-5.5.21/ext/phar/tests/bug70433.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Phar - bug #70433 - Uninitialized pointer in phar_make_dirstream when zip entry filename is "/"
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+--FILE--
+<?php
+$phar = new PharData(__DIR__."/bug70433.zip");
+var_dump($phar);
+$meta = $phar->getMetadata();
+var_dump($meta);
+?>
+DONE
+--EXPECTF--
+object(PharData)#1 (3) {
+  ["pathName":"SplFileInfo":private]=>
+  string(0) ""
+  ["glob":"DirectoryIterator":private]=>
+  bool(false)
+  ["subPathName":"RecursiveDirectoryIterator":private]=>
+  string(0) ""
+}
+NULL
+DONE
OpenPOWER on IntegriCloud