helly Sat Oct 19 06:24:04 2002 EDT Added files: (Branch: PHP_4_2_0) /php4/ext/exif/tests 005.phpt test5.jpg
Modified files: /php4/ext/exif exif.c Log: MFH: Allow ifd start at offset other than 00000008h and provide testcase. Index: php4/ext/exif/exif.c diff -u php4/ext/exif/exif.c:1.52.2.12 php4/ext/exif/exif.c:1.52.2.13 --- php4/ext/exif/exif.c:1.52.2.12 Tue Sep 3 15:09:03 2002 +++ php4/ext/exif/exif.c Sat Oct 19 06:24:03 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: exif.c,v 1.52.2.12 2002/09/03 19:09:03 helly Exp $ */ +/* $Id: exif.c,v 1.52.2.13 2002/10/19 10:24:03 helly Exp $ */ /* ToDos * @@ -1606,6 +1606,8 @@ */ static void exif_process_TIFF_in_JPEG(image_info_type *ImageInfo, char *CharBuf, unsigned int length) { + 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; @@ -1617,14 +1619,15 @@ } /* 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) { php_error(E_WARNING, "Invalid TIFF start (1)"); return; } /* First directory starts at offset 8. Offsets starts at 0. */ - exif_process_IFD_in_JPEG(ImageInfo, CharBuf+8, CharBuf, length/*-14*/, SECTION_IFD0); + exif_process_IFD_in_JPEG(ImageInfo, CharBuf+offset_of_ifd, CharBuf, +length/*-14*/, SECTION_IFD0); #ifdef EXIF_DEBUG php_error(E_NOTICE,"exif_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