helly Sat Oct 19 05:52:00 2002 EDT Added files: /php4/ext/exif/tests 005.phpt test5.jpg
Modified files: /php4/ext/exif exif.c Log: Allow ifd start at offset other than 00000007h and provide testcase. #Now we can read images modified by Exifer. Index: php4/ext/exif/exif.c diff -u php4/ext/exif/exif.c:1.116 php4/ext/exif/exif.c:1.117 --- php4/ext/exif/exif.c:1.116 Thu Oct 3 06:44:13 2002 +++ php4/ext/exif/exif.c Sat Oct 19 05:52:00 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: exif.c,v 1.116 2002/10/03 10:44:13 helly Exp $ */ +/* $Id: exif.c,v 1.117 2002/10/19 09:52:00 helly Exp $ */ /* ToDos * @@ -109,7 +109,7 @@ }; /* }}} */ -#define EXIF_VERSION "1.4 $Id: exif.c,v 1.116 2002/10/03 10:44:13 helly Exp $" +#define EXIF_VERSION "1.4 $Id: exif.c,v 1.117 2002/10/19 09:52:00 helly Exp $" /* {{{ PHP_MINFO_FUNCTION */ @@ -3078,6 +3078,8 @@ */ static void exif_process_TIFF_in_JPEG(image_info_type *ImageInfo, char *CharBuf, size_t length, size_t displacement TSRMLS_DC) { + unsigned exif_value_2a, offset_of_ifd; + /* set the thumbnail stuff to nothing so we can test to see if they get set up */ if (memcmp(CharBuf, "II", 2) == 0) { ImageInfo->motorola_intel = 0; @@ -3089,16 +3091,16 @@ } /* Check the next two values for correctness. */ - if (php_ifd_get16u(CharBuf+2, ImageInfo->motorola_intel) != 0x2a - || php_ifd_get32u(CharBuf+4, ImageInfo->motorola_intel) != 0x08 - ) { + exif_value_2a = php_ifd_get16u(CharBuf+2, ImageInfo->motorola_intel); + offset_of_ifd = php_ifd_get32u(CharBuf+4, ImageInfo->motorola_intel); + if ( exif_value_2a != 0x2a || offset_of_ifd < 0x08) { exif_error_docref(NULL TSRMLS_CC, ImageInfo, E_WARNING, "invalid TIFF start (1)"); return; } ImageInfo->sections_found |= FOUND_IFD0; /* First directory starts at offset 8. Offsets starts at 0. */ - exif_process_IFD_in_JPEG(ImageInfo, CharBuf+8, CharBuf, length/*-14*/, displacement, SECTION_IFD0 TSRMLS_CC); + exif_process_IFD_in_JPEG(ImageInfo, CharBuf+offset_of_ifd, CharBuf, +length/*-14*/, displacement, SECTION_IFD0 TSRMLS_CC); #ifdef EXIF_DEBUG exif_error_docref(NULL TSRMLS_CC, ImageInfo, E_NOTICE, "process TIFF in JPEG done"); Index: php4/ext/exif/tests/005.phpt +++ php4/ext/exif/tests/005.phpt --TEST-- Check for exif_read_data, unusual IFD start --SKIPIF-- <?php if (!extension_loaded("exif")) print "skip";?> --FILE-- <?php /* test5.jpg is a 1*1 image that contain an Exif section with ifd start at 00000009h */ $image = exif_read_data('./ext/exif/tests/test5.jpg','',true,false); var_dump($image['IFD0']); ?> --EXPECT-- array(2) { ["ImageDescription"]=> string(11) "Ifd00000009" ["DateTime"]=> string(19) "2002:10:18 20:06:00" } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php