SOURCES: php-bug-40073.patch - up to 1.173.2.5.2.10

glen glen at pld-linux.org
Wed Jan 10 14:22:09 CET 2007


Author: glen                         Date: Wed Jan 10 13:22:09 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- up to 1.173.2.5.2.10

---- Files affected:
SOURCES:
   php-bug-40073.patch (1.3 -> 1.4) 

---- Diffs:

================================================================
Index: SOURCES/php-bug-40073.patch
diff -u SOURCES/php-bug-40073.patch:1.3 SOURCES/php-bug-40073.patch:1.4
--- SOURCES/php-bug-40073.patch:1.3	Tue Jan  9 18:20:01 2007
+++ SOURCES/php-bug-40073.patch	Wed Jan 10 14:22:04 2007
@@ -1,5 +1,5 @@
---- php-5.2/ext/exif/exif.c	2006/10/10 22:22:43	1.173.2.5.2.4
-+++ php-5.2/ext/exif/exif.c	2007/01/09 11:37:17	1.173.2.5.2.9
+--- exif.c	2006/10/10 22:22:43	1.173.2.5.2.4
++++ exif.c	2007/01/09 17:55:29	1.173.2.5.2.10
 @@ -2,7 +2,7 @@
     +----------------------------------------------------------------------+
     | PHP Version 5                                                        |
@@ -27,7 +27,88 @@
  
  /* {{{ PHP_MINFO_FUNCTION
   */
-@@ -1599,6 +1599,7 @@
+@@ -1150,6 +1150,80 @@
+ }
+ /* }}} */
+ 
++#ifdef EXIF_DEBUG
++char * exif_dump_data(int *dump_free, int format, int components, int length, int motorola_intel, char *value_ptr TSRMLS_DC) /* {{{ */
++{
++	char *dump;
++	int len;
++
++	*dump_free = 0;
++	if (format == TAG_FMT_STRING) {
++		return value_ptr ? value_ptr : "<no data>";
++	}
++	if (format == TAG_FMT_UNDEFINED) {
++		return "<undefined>\n";
++	}
++	if (format == TAG_FMT_IFD) {
++		return "";
++	}
++	if (format == TAG_FMT_SINGLE || format == TAG_FMT_DOUBLE) {
++		return "<not implemented>";
++	}
++	*dump_free = 1;
++	if (components > 1) {
++		len = spprintf(&dump, 0, "(%d,%d) {", components, length);
++	} else {
++		len = spprintf(&dump, 0, "{");
++	}
++	while(components > 0) {
++		switch(format) {
++			case TAG_FMT_BYTE:
++			case TAG_FMT_UNDEFINED:
++			case TAG_FMT_STRING:
++			case TAG_FMT_SBYTE:
++				dump = erealloc(dump, len + 4);
++				sprintf(dump + len, "0x%02X", *value_ptr);
++				len += 4;
++				value_ptr++;
++				break;
++			case TAG_FMT_USHORT:
++			case TAG_FMT_SSHORT:
++				dump = erealloc(dump, len + 6);
++				sprintf(dump + len, "0x%04X", php_ifd_get16s(value_ptr, motorola_intel));
++				len += 6;
++				value_ptr += 2;
++				break;
++			case TAG_FMT_ULONG:
++			case TAG_FMT_SLONG:
++				dump = erealloc(dump, len + 6);
++				sprintf(dump + len, "0x%04X", php_ifd_get32s(value_ptr, motorola_intel));
++				len += 6;
++				value_ptr += 4;
++				break;
++			case TAG_FMT_URATIONAL:
++			case TAG_FMT_SRATIONAL:
++				dump = erealloc(dump, len + 13);
++				sprintf(dump + len, "0x%04X/0x%04X", php_ifd_get32s(value_ptr, motorola_intel), php_ifd_get32s(value_ptr+4, motorola_intel));
++				len += 13;
++				value_ptr += 8;
++				break;
++		}
++		if (components > 0) {
++			dump = erealloc(dump, len + 2);
++			sprintf(dump + len, ", ");
++			len += 2;			
++			components--;
++		} else{
++			break;
++		}
++	}
++	dump = erealloc(dump, len + 2);
++	sprintf(dump + len, "}");
++	return dump;
++}
++/* }}} */
++#endif
++
+ /* {{{ exif_convert_any_format
+  * Evaluate number, be it int, rational, or float from directory. */
+ static double exif_convert_any_format(void *value, int format, int motorola_intel TSRMLS_DC)
+@@ -1599,6 +1673,7 @@
  	image_info->info_list[section_index].list = list;
  
  	info_data  = &image_info->info_list[section_index].list[image_info->info_list[section_index].count];
@@ -35,7 +116,47 @@
  	info_data->tag    = tag;
  	info_data->format = format;
  	info_data->length = length;
-@@ -3590,7 +3591,7 @@
+@@ -2746,10 +2821,14 @@
+ 	char *value_ptr, tagname[64], cbuf[32], *outside=NULL;
+ 	size_t byte_count, offset_val, fpos, fgot;
+ 	xp_field_type *tmp_xp;
++#ifdef EXIF_DEBUG
++	char *dump_data;
++	int dump_free;
++#endif /* EXIF_DEBUG */
+ 
+ 	/* Protect against corrupt headers */
+ 	if (ImageInfo->ifd_nesting_level > MAX_IFD_NESTING_LEVEL) {
+-		exif_error_docref("exif_read_data#error_ifd" TSRMLS_CC, ImageInfo, E_WARNING, "corrupt EXIF header: maximum directory nesting level reached");
++		exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "corrupt EXIF header: maximum directory nesting level reached");
+ 		return FALSE;
+ 	}
+ 	ImageInfo->ifd_nesting_level++;
+@@ -2834,7 +2913,11 @@
+ 
+ 	ImageInfo->sections_found |= FOUND_ANY_TAG;
+ #ifdef EXIF_DEBUG
+-	exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "Process tag(x%04X=%s, at x%04X + x%04X(=%d)): %s%s", tag, exif_get_tagname(tag, tagname, -12, tag_table TSRMLS_CC), offset_val+displacement, byte_count, byte_count, (components>1)&&format!=TAG_FMT_UNDEFINED&&format!=TAG_FMT_STRING?"ARRAY OF ":"", format==TAG_FMT_STRING?(value_ptr?value_ptr:"<no data>"):exif_get_tagformat(format));
++	dump_data = exif_dump_data(&dump_free, format, components, length, ImageInfo->motorola_intel, value_ptr TSRMLS_CC);
++	exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "Process tag(x%04X=%s, at x%04X + x%04X(=%d)): %s%s %s", tag, exif_get_tagname(tag, tagname, -12, tag_table TSRMLS_CC), offset_val+displacement, byte_count, byte_count, (components>1)&&format!=TAG_FMT_UNDEFINED&&format!=TAG_FMT_STRING?"ARRAY OF ":"", exif_get_tagformat(format), dump_data);
++	if (dump_free) {
++		efree(dump_data);
++	}
+ #endif
+ 	if (section_index==SECTION_THUMBNAIL) {
+ 		if (!ImageInfo->Thumbnail.data) {
+@@ -3023,7 +3106,9 @@
+ 						exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "Illegal IFD Pointer");
+ 						return FALSE;
+ 					}
+-					exif_process_IFD_in_JPEG(ImageInfo, Subdir_start, offset_base, IFDlength, displacement, sub_section_index TSRMLS_CC);
++					if (!exif_process_IFD_in_JPEG(ImageInfo, Subdir_start, offset_base, IFDlength, displacement, sub_section_index TSRMLS_CC)) {
++						return FALSE;
++					}
+ #ifdef EXIF_DEBUG
+ 					exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "Subsection %s done", exif_get_sectionname(sub_section_index));
+ #endif
+@@ -3590,7 +3675,7 @@
  								exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "%s THUMBNAIL @0x%04X + 0x%04X", ImageInfo->Thumbnail.data ? "Ignore" : "Read", ImageInfo->Thumbnail.offset, ImageInfo->Thumbnail.size);
  #endif
  								if (!ImageInfo->Thumbnail.data) {
@@ -44,7 +165,7 @@
  									php_stream_seek(ImageInfo->infile, ImageInfo->Thumbnail.offset, SEEK_SET);
  									fgot = php_stream_read(ImageInfo->infile, ImageInfo->Thumbnail.data, ImageInfo->Thumbnail.size);
  									if (fgot < ImageInfo->Thumbnail.size) {
-@@ -3623,7 +3624,7 @@
+@@ -3623,7 +3708,7 @@
  					exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "%s THUMBNAIL @0x%04X + 0x%04X", ImageInfo->Thumbnail.data ? "Ignore" : "Read", ImageInfo->Thumbnail.offset, ImageInfo->Thumbnail.size);
  #endif
  					if (!ImageInfo->Thumbnail.data && ImageInfo->Thumbnail.offset && ImageInfo->Thumbnail.size && ImageInfo->read_thumbnail) {
@@ -53,7 +174,7 @@
  						php_stream_seek(ImageInfo->infile, ImageInfo->Thumbnail.offset, SEEK_SET);
  						fgot = php_stream_read(ImageInfo->infile, ImageInfo->Thumbnail.data, ImageInfo->Thumbnail.size);
  						if (fgot < ImageInfo->Thumbnail.size) {
-@@ -3914,7 +3915,7 @@
+@@ -3914,7 +3999,7 @@
  		exif_iif_add_int(&ImageInfo, SECTION_COMPUTED, "ByteOrderMotorola", ImageInfo.motorola_intel TSRMLS_CC);
  	}
  	if (ImageInfo.FocalLength) {
@@ -62,7 +183,7 @@
  		if(ImageInfo.CCDWidth) {
  			exif_iif_add_fmt(&ImageInfo, SECTION_COMPUTED, "35mmFocalLength" TSRMLS_CC, "%dmm", (int)(ImageInfo.FocalLength/ImageInfo.CCDWidth*35+0.5));
  		}
-@@ -3924,19 +3925,19 @@
+@@ -3924,19 +4009,19 @@
  	}
  	if(ImageInfo.ExposureTime>0) {
  		if(ImageInfo.ExposureTime <= 0.5) {
@@ -86,7 +207,7 @@
  		}
  	}
  	if (ImageInfo.UserComment) {
-@@ -4005,7 +4006,7 @@
+@@ -4005,7 +4090,7 @@
     Reads the embedded thumbnail */
  PHP_FUNCTION(exif_thumbnail)
  {
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/SOURCES/php-bug-40073.patch?r1=1.3&r2=1.4&f=u



More information about the pld-cvs-commit mailing list