com php-src: Fixed bug #67024 - getimagesize should recognize BMP files with negative height: NEWS ext/standard/image.c
ext/standard/tests/image/getimagesize.phpt ext/standard/tests/i mage/image_type_to_mime_type.phpt ext/standard/test s/image/test-1pix.bmp
| From: | Stanislav Malyshev | Date: | Sun, 13 Apr 2014 22:17:04 +0000 |
| Subject: | com php-src: Fixed bug #67024 - getimagesize should recognize BMP files with negative height: NEWS ext/standard/image.c ext/standard/tests/image/getimagesize.phpt ext/standard/tests/i mage/image_type_to_mime_type.phpt ext/standard/test s/image/test-1pix.bmp |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-76844@lists.php.net to get a copy of this message | ||
Commit: 1010200da5da81642bec89d9c90d001478e3554d
Author: Gabor Buella <gbuella@gmail.com> Sat, 5 Apr 2014 00:17:25 +0200
Committer: Stanislav Malyshev <stas@php.net> Sun, 13 Apr 2014 15:17:04 -0700
Parents: beda5093b490e80f631f14555bba7216c284a2c3
Branches: PHP-5.4 PHP-5.5 PHP-5.6
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=1010200da5da81642bec89d9c90d001478e3554d
Log:
Fixed bug #67024 - getimagesize should recognize BMP files with negative height
Bugs:
https://bugs.php.net/67024
Changed paths:
M NEWS
M ext/standard/image.c
M ext/standard/tests/image/getimagesize.phpt
M ext/standard/tests/image/image_type_to_mime_type.phpt
A ext/standard/tests/image/test-1pix.bmp
Diff:
diff --git a/NEWS b/NEWS
index 2061110..4d5441e 100644
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,8 @@ PHP NEWS
UNIX sockets). (Mike)
. Fixed bug #66182 (exit in stream filter produces segfault). (Mike)
. Fixed bug #66736 (fpassthru broken). (Mike)
+ . Fixed bug #67024 (getimagesize should recognize BMP files with negative
+ height). (Gabor Buella)
- Embed:
. Fixed bug #65715 (php5embed.lib isn't provided anymore). (Anatol)
diff --git a/ext/standard/image.c b/ext/standard/image.c
index 27f60c9..816de44 100644
--- a/ext/standard/image.c
+++ b/ext/standard/image.c
@@ -163,6 +163,7 @@ static struct gfxinfo *php_handle_bmp (php_stream * stream TSRMLS_DC)
result = (struct gfxinfo *) ecalloc (1, sizeof(struct gfxinfo));
result->width = (((unsigned int)dim[ 7]) << 24) + (((unsigned int)dim[ 6]) <<
16) + (((unsigned int)dim[ 5]) << 8) + ((unsigned int) dim[ 4]);
result->height = (((unsigned int)dim[11]) << 24) + (((unsigned int)dim[10]) <<
16) + (((unsigned int)dim[ 9]) << 8) + ((unsigned int) dim[ 8]);
+ result->height = abs((int32_t)result->height);
result->bits = (((unsigned int)dim[15]) << 8) + ((unsigned int)dim[14]);
} else {
return NULL;
diff --git a/ext/standard/tests/image/getimagesize.phpt b/ext/standard/tests/image/getimagesize.phpt
index 6cd8275..04ddd8c 100644
--- a/ext/standard/tests/image/getimagesize.phpt
+++ b/ext/standard/tests/image/getimagesize.phpt
@@ -23,7 +23,22 @@ GetImageSize()
var_dump($result);
?>
--EXPECT--
-array(12) {
+array(13) {
+ ["test-1pix.bmp"]=>
+ array(6) {
+ [0]=>
+ int(1)
+ [1]=>
+ int(1)
+ [2]=>
+ int(6)
+ [3]=>
+ string(20) "width="1" height="1""
+ ["bits"]=>
+ int(24)
+ ["mime"]=>
+ string(14) "image/x-ms-bmp"
+ }
["test1bpix.bmp"]=>
array(6) {
[0]=>
diff --git a/ext/standard/tests/image/image_type_to_mime_type.phpt
b/ext/standard/tests/image/image_type_to_mime_type.phpt
index d83ab8d..9f7ffa1 100644
--- a/ext/standard/tests/image/image_type_to_mime_type.phpt
+++ b/ext/standard/tests/image/image_type_to_mime_type.phpt
@@ -25,7 +25,9 @@ image_type_to_mime_type()
var_dump($result);
?>
--EXPECT--
-array(12) {
+array(13) {
+ ["test-1pix.bmp"]=>
+ string(14) "image/x-ms-bmp"
["test1bpix.bmp"]=>
string(14) "image/x-ms-bmp"
["test1pix.bmp"]=>
diff --git a/ext/standard/tests/image/test-1pix.bmp b/ext/standard/tests/image/test-1pix.bmp
new file mode 100644
index 0000000..ec68a57
Binary files /dev/null and b/ext/standard/tests/image/test-1pix.bmp differ