Skip to content
This repository has been archived by the owner on Jun 23, 2023. It is now read-only.

Exception thrown on picture #10

Closed
lsolesen opened this issue Dec 6, 2010 · 6 comments
Closed

Exception thrown on picture #10

lsolesen opened this issue Dec 6, 2010 · 6 comments
Labels
Milestone

Comments

@lsolesen
Copy link
Collaborator

lsolesen commented Dec 6, 2010

Bug created from sourceforge

require_once('PelJpeg.php'); 
$jpeg = new PelJpeg($tmpfile); 
$exif = $jpeg->getExif(); 
if ( $exif != null ) { 
    $jpeg1 = new PelJpeg($bigfile); 
    $jpeg1->setExif( $exif); 
    file_put_contents($bigfile, $jpeg1->getBytes()); 
}

A test case has been created

@ghost ghost assigned lsolesen Apr 11, 2011
@lsolesen
Copy link
Collaborator Author

This still stands. Tests just commented out.

@lsolesen lsolesen reopened this Mar 21, 2016
@nosilver4u
Copy link

If I need to open a new issue, let me know, but this sounds very much like an issue I'm encountering. I couldn't confirm, since the original bug on sourceforge is missing.
At any rate, the PelJpeg constructor is throwing this error at me:
PHP Fatal error: Uncaught lsolesen\pel\PelDataWindowOffsetException: Offset 1572 not within [0, 1554] in ../src/PelDataWindow.php:241
See attached file
2158-2158-111032_59photo231-150x150

@mondrake
Copy link
Contributor

mondrake commented Nov 17, 2017

Investigating this.

At first sight, something is wrong in calculating thumbnail lenght for the bug1730993_tmp.jpg test file:

$ php examples/dump-image.php -d test/images/bug1730993_tmp.jpg
Parsing 33843 bytes...
Found APP1 section of length 718
Parsing 718 bytes of Exif data...
Parsing 712 bytes of TIFF data...
Found Motorola byte order
First IFD at offset 8.
Constructing IFD at offset 8 from 712 bytes...
Loading 15 entries...
Loading entry with tag 0x0103: Compression (1 of 15)...
Loading entry with tag 0x010E: ImageDescription (2 of 15)...
Loading entry with tag 0x010F: Make (3 of 15)...
Loading entry with tag 0x0110: Model (4 of 15)...
Loading entry with tag 0x0112: Orientation (5 of 15)...
Loading entry with tag 0x011A: XResolution (6 of 15)...
Loading entry with tag 0x011B: YResolution (7 of 15)...
Loading entry with tag 0x0128: ResolutionUnit (8 of 15)...
Loading entry with tag 0x0131: Software (9 of 15)...
Loading entry with tag 0x0132: DateTime (10 of 15)...
Warning: Wrong number of components found for DateTime tag: 21. Expected 20. (PelIfd.php:543)
Loading entry with tag 0x0201: JPEGInterchangeFormat (11 of 15)...
Loading entry with tag 0x0202: JPEGInterchangeFormatLength (12 of 15)...
Warning: Thumbnail length 14812 bytes adjusted to -290 bytes. (PelIfd.php:716)
PHP Fatal error:  Uncaught lsolesen\pel\PelDataWindowWindowException: Window [1002, 712] does not fit in window [0, 712] in /home/travis/build/mondrake/pel/src/PelDataWindow.php:165
Stack trace:
#0 /home/travis/build/mondrake/pel/src/PelDataWindow.php(218): lsolesen\pel\PelDataWindow->setWindowStart(1002)
#1 /home/travis/build/mondrake/pel/src/PelIfd.php(724): lsolesen\pel\PelDataWindow->getClone(1002, -290)
#2 /home/travis/build/mondrake/pel/src/PelIfd.php(319): lsolesen\pel\PelIfd->safeSetThumbnail(Object(lsolesen\pel\PelDataWindow), 1002, -290)
#3 /home/travis/build/mondrake/pel/src/PelTiff.php(159): lsolesen\pel\PelIfd->load(Object(lsolesen\pel\PelDataWindow), 10)
#4 /home/travis/build/mondrake/pel/src/PelExif.php(108): lsolesen\pel\PelTiff->load(Object(lsolesen\pel\PelDataWindow))
#5 /home/travis/build/mondrake/pel/src/PelJpeg.php(216): lsolesen\pel\PelExif->load(Object(lsolesen\pel\PelDataWindow))
#6 /home/travis/build/mondrake/pel/examples/dump-image.php(89): lsolesen\pel\PelJpeg->load(Object(lsolesen\pel\PelDataWindow) in /home/travis/build/mondrake/pel/src/PelDataWindow.php on line 165

Fatal error: Uncaught lsolesen\pel\PelDataWindowWindowException: Window [1002, 712] does not fit in window [0, 712] in /home/travis/build/mondrake/pel/src/PelDataWindow.php on line 165

lsolesen\pel\PelDataWindowWindowException: Window [1002, 712] does not fit in window [0, 712] in /home/travis/build/mondrake/pel/src/PelDataWindow.php on line 165

Call Stack:
    0.0003     414968   1. {main}() /home/travis/build/mondrake/pel/examples/dump-image.php:0
    0.0060     888848   2. lsolesen\pel\PelJpeg->load() /home/travis/build/mondrake/pel/examples/dump-image.php:89
    0.0065     895080   3. lsolesen\pel\PelExif->load() /home/travis/build/mondrake/pel/src/PelJpeg.php:216
    0.0068     924512   4. lsolesen\pel\PelTiff->load() /home/travis/build/mondrake/pel/src/PelExif.php:108
    0.0083    1105744   5. lsolesen\pel\PelIfd->load() /home/travis/build/mondrake/pel/src/PelTiff.php:159
    0.0130    1563320   6. lsolesen\pel\PelIfd->safeSetThumbnail() /home/travis/build/mondrake/pel/src/PelIfd.php:319
    0.0132    1569528   7. lsolesen\pel\PelDataWindow->getClone() /home/travis/build/mondrake/pel/src/PelIfd.php:724
    0.0132    1569640   8. lsolesen\pel\PelDataWindow->setWindowStart() /home/travis/build/mondrake/pel/src/PelDataWindow.php:218

@mondrake
Copy link
Contributor

Tried dump-image on @nosilver4u test file, the problem seems different but somehow both seem connected to offsets going out of boundaries:

$ php examples/dump-image.php -d test/images/27303092-d9d72838-54f6-11e7-943c-78933f9c9fbe.jpg
Parsing 12043 bytes...
Found APP0 section of length 14
Found APP1 section of length 1561
Parsing 1561 bytes of Exif data...
Parsing 1555 bytes of TIFF data...
Found Intel byte order
First IFD at offset 8.
Constructing IFD at offset 8 from 1555 bytes...
Loading 15 entries...
Loading entry with tag 0x010F: Make (1 of 15)...
Loading entry with tag 0x0110: Model (2 of 15)...
Loading entry with tag 0x0112: Orientation (3 of 15)...
Loading entry with tag 0x011A: XResolution (4 of 15)...
Loading entry with tag 0x011B: YResolution (5 of 15)...
Loading entry with tag 0x0128: ResolutionUnit (6 of 15)...
Loading entry with tag 0x0132: DateTime (7 of 15)...
Loading entry with tag 0x0213: YCbCrPositioning (8 of 15)...
Loading entry with tag 0xA217: SensingMethod (9 of 15)...
Warning: IFD 0 cannot hold
  Tag: 0xA217 (SensingMethod)
    Format    : 3 (Short)
    Components: 1
    Value     : 2
    Text      : One-chip color area sensor
 (PelIfd.php:1196)
Loading entry with tag 0xA401: CustomRendered (10 of 15)...
Warning: IFD 0 cannot hold
  Tag: 0xA401 (CustomRendered)
    Format    : 3 (Short)
    Components: 1
    Value     : 0
    Text      : Normal process
 (PelIfd.php:1196)
Loading entry with tag 0xA402: ExposureMode (11 of 15)...
Warning: IFD 0 cannot hold
  Tag: 0xA402 (ExposureMode)
    Format    : 3 (Short)
    Components: 1
    Value     : 0
    Text      : Auto exposure
 (PelIfd.php:1196)
Loading entry with tag 0xA403: WhiteBalance (12 of 15)...
Warning: IFD 0 cannot hold
  Tag: 0xA403 (WhiteBalance)
    Format    : 3 (Short)
    Components: 1
    Value     : 0
    Text      : Auto white balance
 (PelIfd.php:1196)
Loading entry with tag 0xA404: DigitalZoomRatio (13 of 15)...
Warning: IFD 0 cannot hold
  Tag: 0xA404 (DigitalZoomRatio)
    Format    : 5 (Rational)
    Components: 1
    Value     : Array
(
    [0] => 2272
    [1] => 2272
)

    Text      : 2272/2272
 (PelIfd.php:1196)
Loading entry with tag 0xA406: SceneCaptureType (14 of 15)...
Warning: IFD 0 cannot hold
  Tag: 0xA406 (SceneCaptureType)
    Format    : 3 (Short)
    Components: 1
    Value     : 0
    Text      : Standard
 (PelIfd.php:1196)
Loading entry with tag 0x8769: ExifIFDPointer (15 of 15)...
Found sub IFD at offset 263
Constructing IFD at offset 263 from 1555 bytes...
Loading 25 entries...
Loading entry with tag 0x829A: ExposureTime (1 of 25)...
Loading entry with tag 0x829D: FNumber (2 of 25)...
Loading entry with tag 0x9000: ExifVersion (3 of 25)...
Loading entry with tag 0x9003: DateTimeOriginal (4 of 25)...
Loading entry with tag 0x9004: DateTimeDigitized (5 of 25)...
Loading entry with tag 0x9101: ComponentsConfiguration (6 of 25)...
Loading entry with tag 0x9102: CompressedBitsPerPixel (7 of 25)...
Loading entry with tag 0x9201: ShutterSpeedValue (8 of 25)...
Loading entry with tag 0x9202: ApertureValue (9 of 25)...
Loading entry with tag 0x9204: ExposureBiasValue (10 of 25)...
Loading entry with tag 0x9205: MaxApertureValue (11 of 25)...
Loading entry with tag 0x9207: MeteringMode (12 of 25)...
Loading entry with tag 0x9209: Flash (13 of 25)...
Loading entry with tag 0x920A: FocalLength (14 of 25)...
Loading entry with tag 0x927C: MakerNote (15 of 25)...
Found sub IFD at offset 669
Loading entry with tag 0x9286: UserComment (16 of 25)...
Loading entry with tag 0xA000: FlashPixVersion (17 of 25)...
Loading entry with tag 0xA001: ColorSpace (18 of 25)...
Loading entry with tag 0xA002: PixelXDimension (19 of 25)...
Loading entry with tag 0xA003: PixelYDimension (20 of 25)...
Loading entry with tag 0xA005: InteroperabilityIFDPointer (21 of 25)...
Found sub IFD at offset 1572
Constructing IFD at offset 1572 from 1555 bytes...
PHP Fatal error:  Uncaught lsolesen\pel\PelDataWindowOffsetException: Offset 1572 not within [0, 1554] in /home/travis/build/mondrake/pel/src/PelDataWindow.php:241
Stack trace:
#0 /home/travis/build/mondrake/pel/src/PelDataWindow.php(366): lsolesen\pel\PelDataWindow->validateOffset(1572)
#1 /home/travis/build/mondrake/pel/src/PelIfd.php(301): lsolesen\pel\PelDataWindow->getShort(1572)
#2 /home/travis/build/mondrake/pel/src/PelIfd.php(348): lsolesen\pel\PelIfd->load(Object(lsolesen\pel\PelDataWindow), 1572)
#3 /home/travis/build/mondrake/pel/src/PelIfd.php(348): lsolesen\pel\PelIfd->load(Object(lsolesen\pel\PelDataWindow), 265)
#4 /home/travis/build/mondrake/pel/src/PelTiff.php(159): lsolesen\pel\PelIfd->load(Object(lsolesen\pel\PelDataWindow), 10)
#5 /home/travis/build/mondrake/pel/src/PelExif.php(108): lsolesen\pel\PelTiff->load(Object(lsolesen\pel\PelDataWindow))
#6 /home/travis/build/mondrake/pel/src/PelJpeg.php(216): lsolesen\pel\PelExif->load(Object(lsolesen\pel\PelDataWindow))
#7 /home/travis/build/mondrake/pel/examples/ in /home/travis/build/mondrake/pel/src/PelDataWindow.php on line 241

Fatal error: Uncaught lsolesen\pel\PelDataWindowOffsetException: Offset 1572 not within [0, 1554] in /home/travis/build/mondrake/pel/src/PelDataWindow.php on line 241

lsolesen\pel\PelDataWindowOffsetException: Offset 1572 not within [0, 1554] in /home/travis/build/mondrake/pel/src/PelDataWindow.php on line 241

Call Stack:
    0.0002     415008   1. {main}() /home/travis/build/mondrake/pel/examples/dump-image.php:0
    0.0040     864312   2. lsolesen\pel\PelJpeg->load() /home/travis/build/mondrake/pel/examples/dump-image.php:89
    0.0046     871088   3. lsolesen\pel\PelExif->load() /home/travis/build/mondrake/pel/src/PelJpeg.php:216
    0.0049     900520   4. lsolesen\pel\PelTiff->load() /home/travis/build/mondrake/pel/src/PelExif.php:108
    0.0064    1084056   5. lsolesen\pel\PelIfd->load() /home/travis/build/mondrake/pel/src/PelTiff.php:159
    0.0137    1606264   6. lsolesen\pel\PelIfd->load() /home/travis/build/mondrake/pel/src/PelIfd.php:348
    0.0177    1679008   7. lsolesen\pel\PelIfd->load() /home/travis/build/mondrake/pel/src/PelIfd.php:348
    0.0178    1679008   8. lsolesen\pel\PelDataWindow->getShort() /home/travis/build/mondrake/pel/src/PelIfd.php:301
    0.0178    1679008   9. lsolesen\pel\PelDataWindow->validateOffset() /home/travis/build/mondrake/pel/src/PelDataWindow.php:366

@mondrake
Copy link
Contributor

In both cases, we shoud try/catch the exceptions thrown and manage them without fatalling out.

mondrake referenced this issue in mondrake/pel Nov 17, 2017
weberhofer pushed a commit that referenced this issue Nov 18, 2017
Refactored tests

* Fixes for #10

* code style fixes

* Cleanup of tests

* wrong test file renamed

* Right test image file
@nosilver4u
Copy link

Thanks folks for pushing through that, looking forward to applying the fixes in my project soon!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

3 participants