summaryrefslogtreecommitdiff
path: root/ext/standard
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2017-08-15 12:34:37 +0800
committerXinchen Hui <laruence@gmail.com>2017-08-15 12:34:37 +0800
commit4f8e70385473aff9eeb3cc32498f6d0a8fc94629 (patch)
treeb09183a75b00d94a3efc056969f6ec5248d49b92 /ext/standard
parente112d7143567f97cdaf51ad4803f86f8e3b4fcd9 (diff)
parentd8c80af71e9b43e9adec9e3f57f2732a0ac95d71 (diff)
downloadphp-git-4f8e70385473aff9eeb3cc32498f6d0a8fc94629.tar.gz
Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0: Fixed bug #75075 (unpack with X* causes infinity loop)
Diffstat (limited to 'ext/standard')
-rw-r--r--ext/standard/pack.c4
-rw-r--r--ext/standard/tests/strings/bug75075.phpt10
2 files changed, 14 insertions, 0 deletions
diff --git a/ext/standard/pack.c b/ext/standard/pack.c
index 1e1348a27c..95ba7f03cf 100644
--- a/ext/standard/pack.c
+++ b/ext/standard/pack.c
@@ -792,6 +792,10 @@ PHP_FUNCTION(unpack)
/* Never use any input */
case 'X':
size = -1;
+ if (arg < 0) {
+ php_error_docref(NULL, E_WARNING, "Type %c: '*' ignored", type);
+ arg = 1;
+ }
break;
case '@':
diff --git a/ext/standard/tests/strings/bug75075.phpt b/ext/standard/tests/strings/bug75075.phpt
new file mode 100644
index 0000000000..232de50622
--- /dev/null
+++ b/ext/standard/tests/strings/bug75075.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Bug #75075 (unpack with X* causes infinity loop)
+--FILE--
+<?php
+var_dump(unpack("X*", ""));
+?>
+--EXPECTF--
+Warning: unpack(): Type X: '*' ignored in %sbug75075.php on line %d
+array(0) {
+}