php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login

Patch 0001-Fix-72735-regression-in-exif-for-MakerNote.patch for EXIF related Bug #72735

Patch version 2016-08-03 08:10 UTC

Return to Bug #72735 | Download this patch
This patch is obsolete

Obsoleted by patches:

Patch Revisions:

Developer: remi@php.net

From e9a5b44a9e5030bee90543699b3f6b05a422eba0 Mon Sep 17 00:00:00 2001
From: Remi Collet <fedora@famillecollet.com>
Date: Wed, 3 Aug 2016 10:09:06 +0200
Subject: [PATCH] Fix #72735 regression in exif for MakerNote

---
 ext/exif/exif.c              |  10 ++++++++--
 ext/exif/tests/bug72735.phpt |  25 +++++++++++++++++++++++++
 ext/exif/tests/nokia.jpg     | Bin 0 -> 6511 bytes
 ext/exif/tests/panasonic.jpg | Bin 0 -> 16629 bytes
 ext/exif/tests/samsung.jpg   | Bin 0 -> 23862 bytes
 5 files changed, 33 insertions(+), 2 deletions(-)
 create mode 100644 ext/exif/tests/bug72735.phpt
 create mode 100644 ext/exif/tests/nokia.jpg
 create mode 100644 ext/exif/tests/panasonic.jpg
 create mode 100644 ext/exif/tests/samsung.jpg

diff --git a/ext/exif/exif.c b/ext/exif/exif.c
index 5564de4..c9b00ee 100644
--- a/ext/exif/exif.c
+++ b/ext/exif/exif.c
@@ -1708,6 +1708,9 @@ static void exif_iif_add_value(image_info_type *image_info, int section_index, c
 			if (!length)
 				break;
 		case TAG_FMT_UNDEFINED:
+			if (tag == TAG_MAKER_NOTE) {
+				length = strlen(value);
+			}
 			if (value) {
 				/* do not recompute length here */
 				info_value->s = estrndup(value, length);
@@ -2722,9 +2725,12 @@ static int exif_process_IFD_in_MAKERNOTE(image_info_type *ImageInfo, char * valu
 	const maker_note_type *maker_note;
 	char *dir_start;
 
+
 	for (i=0; i<=sizeof(maker_note_array)/sizeof(maker_note_type); i++) {
-		if (i==sizeof(maker_note_array)/sizeof(maker_note_type))
-			return FALSE;
+		if (i==sizeof(maker_note_array)/sizeof(maker_note_type)) {
+			/* unknown manufacturer, not an error, use it as a string */
+			return TRUE;
+		}
 		maker_note = maker_note_array+i;
 
 		/*exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "check (%s,%s)", maker_note->make?maker_note->make:"", maker_note->model?maker_note->model:"");*/
diff --git a/ext/exif/tests/bug72735.phpt b/ext/exif/tests/bug72735.phpt
new file mode 100644
index 0000000..3d7a7e8
--- /dev/null
+++ b/ext/exif/tests/bug72735.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #72735 issue in MakerNote
+--SKIPIF--
+<?php if (!extension_loaded('exif')) print 'skip exif extension not available'; ?>
+--INI--
+output_handler=
+zlib.output_compression=0 
+--FILE--
+<?php
+$photos = array(
+	'nokia.jpg',
+	'panasonic.jpg',
+	'samsung.jpg',
+);
+foreach ($photos as $photo) {
+	$exif = exif_read_data(__DIR__ . '/' . $photo);
+	var_dump($exif['MakerNote']);
+}
+?>
+===DONE===
+--EXPECTF--
+string(5) "Nikon"
+string(9) "Panasonic"
+NULL
+===DONE===
diff --git a/ext/exif/tests/nokia.jpg b/ext/exif/tests/nokia.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..7bfec2b8aaa70365df065a940d2de30585602607
GIT binary patch
literal 6511
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
JKBa%pzX4@NNMZm0

literal 0
HcmV?d00001

diff --git a/ext/exif/tests/panasonic.jpg b/ext/exif/tests/panasonic.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..35713e63a1201d0a8391e556580fb116ca252c6a
GIT binary patch
literal 16629
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

literal 0
HcmV?d00001

diff --git a/ext/exif/tests/samsung.jpg b/ext/exif/tests/samsung.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c930c9a4ac0431004849d8d3cff3c8d483563a17
GIT binary patch
literal 23862
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

literal 0
HcmV?d00001

-- 
2.5.5

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Mar 19 08:01:29 2024 UTC