Bug #78083 [Ver]: exif_read_data() corrupt EXIF header: maximum directory nesting level reached

From: Date: Mon, 31 Aug 2020 08:50:15 +0000
Subject: Bug #78083 [Ver]: exif_read_data() corrupt EXIF header: maximum directory nesting level reached
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-228807@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=78083&edit=1

 ID:                 78083
 Updated by:         cmb@php.net
 Reported by:        fermin at ares dot uy
 Summary:            exif_read_data() corrupt EXIF header: maximum
                     directory nesting level reached
 Status:             Verified
 Type:               Bug
 Package:            EXIF related
 Operating System:   *
 PHP Version:        7.3.5
 Block user comment: N
 Private report:     N

 New Comment:

That output looks actually good to me (besides that exiftool
supports way more tags than we do[1]).

[1] <https://exiftool.org/TagNames/EXIF.html>


Previous Comments:
------------------------------------------------------------------------
[2020-08-31 07:59:14] nikic@php.net

Or is that actually the expected output? I see that exiftool only prints an empty title as well.

------------------------------------------------------------------------
[2020-08-31 07:43:29] nikic@php.net

On current 7.3 HEAD the "maximum directory nesting level" warning no longer occurs, but
the output still seems to be corrupted: https://gist.github.com/nikic/4759bc05f118e0d4e59b54182c3da8f1

The "Title" is present, but probably filled with null bytes. There's a lot of
"UndefinedTag" going on as well.

------------------------------------------------------------------------
[2020-07-24 09:02:00] cmb@php.net

Indeed, that appears to be a bug – exiftool processes the image
just fine.

------------------------------------------------------------------------
[2019-05-29 16:53:39] fermin at ares dot uy

Description:
------------
When using the function "exif_read_data()" on certain jpg images it outputs this warning:

"Warning: exif_read_data(php7D62.tmp): corrupt EXIF header: maximum directory nesting level
reached in \path\to\index.php on line 4"

And the metadata field 'title' does not show up on the resulting array.

You can download a problematic image for testing here https://ares.uy/P1110193.JPG

Test script:
---------------
<?php
if (!empty($_FILES)) {
  $imagen = $_FILES['imagen']['tmp_name'];
  $metadata = exif_read_data($imagen, 0, true);
  highlight_string("<?php\n\$metadata =\n" . var_export($metadata, true) .
";\n?>");
}
?>

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>EXIF TEST</title>
  </head>
  <body>
    <form action="/" method="post"
enctype="multipart/form-data">
      <input type="file" name="imagen" value="">
      <input type="submit" name="" value="Print EXIF">
    </form>
  </body>
</html>


Expected result:
----------------
No warning message and the complete list of metadata fields on the array outputted by the function
exif_read_data.

Actual result:
--------------
Warning message and incomplete metadata array.


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=78083&edit=1


Thread (8 messages)

« previous php.bugs (#228807) next »