Edit report at http://bugs.php.net/bug.php?id=50660&edit=1
ID: 50660
Comment by: mjk at emmjaykay dot org
Reported by: skinny dot bravo at gmail dot com
Summary: exif_read_data(): Illegal IFD offset (works fine
with other exif readers)
Status: Verified
Type: Bug
Package: EXIF related
Operating System: Linux
PHP Version: 5.*, 6
Block user comment: N
Private report: N
New Comment:
The issue stems from exif.c's exif_process_IFD_in_JPEG() function where
it calculates NextDirOffset. If this means what I think it does, for
EXIF_IFD and IFD_GPS, there is no next IFD and no further parsing should
take place. Right now, it parses into the string for the next entry
(2009...)
I am not sure if this is correct since I am no expert on EXIF.
The output of var_dump seems to be still in-correct, though. I do not
know if this is a separate issue or something I introduced with this
patch.
Previous Comments:
------------------------------------------------------------------------
[2010-01-06 12:49:45] skinny dot bravo at gmail dot com
Sorry,
- php5.2-201001041530 produces the same result
+ php5.2-201001041530 produces the same result as 5.2.12 below
------------------------------------------------------------------------
[2010-01-06 12:42:40] [email protected]
If it works with php5.2-201001041530 it means that the issue has been
resolved.
------------------------------------------------------------------------
[2010-01-04 17:55:52] skinny dot bravo at gmail dot com
Description:
------------
PHP fails reading GPS data from a given set of photos from Samsung SGH-
i900. The images are said to come from the camera without any edits.
Ex:
http://o1.imgsrc.ru/v/vahmurka/3/16095163cDU.jpg
http://o1.imgsrc.ru/v/vahmurka/1/16095161rno.jpg
exiftool 8.00 has no problem reading this file. php5.2-201001041530
produces
the same result.
Reproduce code:
---------------
# php -r 'var_dump(read_exif_data("16095163cDU.jpg",NULL,TRUE));'
Expected result:
----------------
...
["SectionsFound"]=>
string(35) "ANY_TAG, IFD0, THUMBNAIL, EXIF, GPS"
...
["GPS"]=>
array(8) {
["GPSVersion"]=>
string(4) ""
["GPSLatitudeRef"]=>
string(1) "N"
["GPSLatitude"]=>
array(3) {
[0]=>
string(4) "43/1"
[1]=>
string(4) "16/1"
[2]=>
string(11) "75363/10000"
}
["GPSLongitudeRef"]=>
string(1) "E"
["GPSLongitude"]=>
array(3) {
[0]=>
string(4) "77/1"
[1]=>
string(4) "21/1"
[2]=>
string(11) "140249/2629"
}
["GPSAltitudeRef"]=>
string(1) ""
["GPSAltitude"]=>
string(6) "1603/1"
["GPSMapDatum"]=>
string(6) "WGS-84"
}
these results are taken after fixing image with exiftool:
# exiftool -all= -tagsfromfile @ -all:all -unsafe 16095163cDU.jpg
Actual result:
--------------
Warning: read_exif_data(16095163cDU.jpg): Illegal IFD offset in
Command line code on line 1
array(4) {
["FILE"]=>
array(6) {
["FileName"]=>
string(15) "16095163cDU.jpg"
["FileDateTime"]=>
int(1259257839)
["FileSize"]=>
int(938692)
["FileType"]=>
int(2)
["MimeType"]=>
string(10) "image/jpeg"
["SectionsFound"]=>
string(19) "ANY_TAG, IFD0, EXIF"
}
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=50660&edit=1