From: Ilia Alshanetsky Date: Thu, 26 Jan 2006 15:48:15 +0000 (+0000) Subject: MFB51: Fixed bug #36148 (unpack("H*hex", $data) is adding an extra X-Git-Tag: RELEASE_1_2~359 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b031ac3fe427ea3373a43a74d77e4da75ef722f6;p=php MFB51: Fixed bug #36148 (unpack("H*hex", $data) is adding an extra character to the end of the string). --- diff --git a/ext/standard/pack.c b/ext/standard/pack.c index 209ddf8de0..f088890a59 100644 --- a/ext/standard/pack.c +++ b/ext/standard/pack.c @@ -692,7 +692,9 @@ PHP_FUNCTION(unpack) len = size * 2; } - len -= argb % 2; + if (argb > 0) { + len -= argb % 2; + } buf = emalloc(len + 1); diff --git a/ext/standard/tests/strings/bug36148.phpt b/ext/standard/tests/strings/bug36148.phpt new file mode 100644 index 0000000000..06caac3334 --- /dev/null +++ b/ext/standard/tests/strings/bug36148.phpt @@ -0,0 +1,29 @@ +--TEST-- +Bug #36148 (unpack("H*hex", $data) is adding an extra character to the end of the string) +--FILE-- + +--EXPECT-- +a: array(1) { + [1]=> + string(2) "a0" +} +aa: array(1) { + [1]=> + string(2) "aa" +} +aaa: array(1) { + [1]=> + string(4) "aaa0" +} +aaaa: array(1) { + [1]=> + string(4) "aaaa" +}