]> granicus.if.org Git - php/commitdiff
Fix bug #68817: Null pointer deference
authorStanislav Malyshev <stas@php.net>
Thu, 15 Jan 2015 00:12:35 +0000 (16:12 -0800)
committerStanislav Malyshev <stas@php.net>
Thu, 15 Jan 2015 00:12:35 +0000 (16:12 -0800)
ext/json/JSON_parser.c
ext/json/tests/bug68817.phpt [new file with mode: 0644]

index 22508b79b11581e47839be96f36fa26d9a4deff6..4c17eb273ce507bbb368fb1734df2ee6e25cbe40 100644 (file)
@@ -582,7 +582,7 @@ parse_JSON_ex(JSON_parser jp, zval *z, unsigned short utf16_json[], int length,
 
                     json_create_zval(&mval, &buf, type, options);
                     add_next_index_zval(&jp->the_zstack[jp->top], &mval);
-                    buf.s->len = 0;
+                    if (buf.s) { buf.s->len = 0; }
                     JSON_RESET_TYPE();
                 }
 
diff --git a/ext/json/tests/bug68817.phpt b/ext/json/tests/bug68817.phpt
new file mode 100644 (file)
index 0000000..aa9a63f
--- /dev/null
@@ -0,0 +1,17 @@
+--TEST--
+Bug #68817 (Null pointer deference)
+--SKIPIF--
+<?php if (!extension_loaded("json")) print "skip"; ?>
+--FILE--
+<?php
+
+var_dump(json_decode('[""]'));
+
+?>
+===DONE===
+--EXPECTF--
+array(1) {
+  [0]=>
+  string(0) ""
+}
+===DONE===