diff options
author | Brian Evans <grknight@gentoo.org> | 2019-05-02 08:53:54 -0400 |
---|---|---|
committer | Brian Evans <grknight@gentoo.org> | 2019-05-02 08:53:54 -0400 |
commit | 61e682ea2f4a7084235b814159f1db1b23878abe (patch) | |
tree | 71d82f9ff6d0c2c521799ec312a75adc22a04d63 | |
parent | April 2019 backports from 7.1.28 (diff) | |
download | php-patches-61e682ea2f4a7084235b814159f1db1b23878abe.tar.gz php-patches-61e682ea2f4a7084235b814159f1db1b23878abe.tar.bz2 php-patches-61e682ea2f4a7084235b814159f1db1b23878abe.zip |
Add backports from php 7.1.297.1.29bp
Signed-off-by: Brian Evans <grknight@gentoo.org>
-rw-r--r-- | 00170_May2019-backports.patch | 52 | ||||
-rw-r--r-- | bug77950.tiff | bin | 0 -> 1267 bytes |
2 files changed, 52 insertions, 0 deletions
diff --git a/00170_May2019-backports.patch b/00170_May2019-backports.patch new file mode 100644 index 0000000..463768f --- /dev/null +++ b/00170_May2019-backports.patch @@ -0,0 +1,52 @@ +From 7cbf6a0ca98a187be1b31b1e85935319430d9e61 Mon Sep 17 00:00:00 2001 +From: Stanislav Malyshev <stas@php.net> +Date: Mon, 29 Apr 2019 23:38:12 -0700 +Subject: [PATCH] Fix bug #77950 - Heap-buffer-overflow in _estrndup via + exif_process_IFD_TAG + +I do not completely understand what is going on there, but I am pretty +sure dir_entry <= offset_base if not a normal situation, so we better not +to rely on such dir_entry. + +(cherry picked from commit f80ad18afae2230c2c1802c7d829100af646874e) +--- + NEWS | 12 ++++++++++-- + ext/exif/exif.c | 2 +- + ext/exif/tests/bug77950.phpt | 12 ++++++++++++ + ext/exif/tests/bug77950.tiff | Bin 0 -> 1267 bytes + 4 files changed, 23 insertions(+), 3 deletions(-) + create mode 100644 ext/exif/tests/bug77950.phpt + create mode 100644 ext/exif/tests/bug77950.tiff + +diff --git a/ext/exif/exif.c b/ext/exif/exif.c +index 81cf438a8e..15e091b6c5 100644 +--- a/ext/exif/exif.c ++++ b/ext/exif/exif.c +@@ -2901,7 +2901,7 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha + offset_base is ImageInfo->file.list[sn].data-dir_offset + dir_entry - offset_base is dir_offset+2+i*12 + */ +- if (byte_count > IFDlength || offset_val > IFDlength-byte_count || value_ptr < dir_entry || offset_val < (size_t)(dir_entry-offset_base)) { ++ if (byte_count > IFDlength || offset_val > IFDlength-byte_count || value_ptr < dir_entry || offset_val < (size_t)(dir_entry-offset_base) || dir_entry <= offset_base) { + /* It is important to check for IMAGE_FILETYPE_TIFF + * JPEG does not use absolute pointers instead its pointers are + * relative to the start of the TIFF header in APP1 section. */ +diff --git a/ext/exif/tests/bug77950.phpt b/ext/exif/tests/bug77950.phpt +new file mode 100644 +index 0000000000..dc0f3549cb +--- /dev/null ++++ b/ext/exif/tests/bug77950.phpt +@@ -0,0 +1,12 @@ ++--TEST-- ++Bug #77950 (Heap-buffer-overflow in _estrndup via exif_process_IFD_TAG) ++--SKIPIF-- ++<?php if (!extension_loaded('exif')) print 'skip exif extension not available';?> ++--FILE-- ++<?php ++exif_read_data(__DIR__."/bug77950.tiff"); ++?> ++DONE ++--EXPECTF-- ++%A ++DONE +\ No newline at end of file diff --git a/bug77950.tiff b/bug77950.tiff Binary files differnew file mode 100644 index 0000000..5c8250a --- /dev/null +++ b/bug77950.tiff |