|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #34704 Infinite recursion due to corrupt JPEG
Submitted: 2005-10-02 09:07 UTC Modified: 2005-10-09 16:43 UTC
Avg. Score:5.0 ± 0.0
Reproduced:0 of 0 (0.0%)
From: t dot starling at physics dot unimelb dot edu dot au Assigned: helly (profile)
Status: Closed Package: EXIF related
PHP Version: 5CVS, 6CVS, 4CVS (2005-10-02) OS: *
Private report: No CVE-ID: None
 [2005-10-02 09:07 UTC] t dot starling at physics dot unimelb dot edu dot au
An image, seen in the wild and probably generated non-maliciously, reliably causes exif_read_data() to go into infinite recursion.

I've fixed the problem and created a patch against PHP 4.4.0:

The test image is here:

The problem was an assumption that images would follow the spec and include a maximum of 2 IFD headers, IFD0 for the image and IFD1 for the thumbnail. The test image probably has the "next IFD offset" field pointing back to the same structure, creating an infinite loop. I haven't studied the test image in detail, but my patch allows PHP's Exif functions to read it without segfaulting, which is good enough for me.

I decided to ignore any further IFDs beyond the first two rather than issue an error, for compatibility with possible future revisions of the Exif spec.

-- Tim Starling (MediaWiki developer)


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2005-10-02 13:05 UTC]
Please try using this CVS snapshot:
For Windows:

 [2005-10-02 21:33 UTC] t dot starling at physics dot unimelb dot edu dot au
There are no significant changes between 4.4.0 and HEAD, you should be able to forward-port it without any trouble. See

My patch comes in at around line 3039, as you can see there are only documentation changes.

This patch is now in production on and related websites. I for one don't want to see my website get DoSed because of this.
 [2005-10-02 22:13 UTC]
Assigned to the "maintainer".

 [2005-10-09 16:43 UTC]
This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
Thank you for the report, and for helping us make PHP better.

Fixed for 4.4.1, 5.0.6, 5.1.0, HEAD
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Feb 20 21:01:28 2024 UTC