[wp-trac] [WordPress Trac] #54637: wp_read_image_metadata() sends `false` instead of `array` for `$iptc` and `$exif` parameters to `wp_read_image_metadata` filter

WordPress Trac noreply at wordpress.org
Thu Dec 16 19:21:07 UTC 2021

#54637: wp_read_image_metadata() sends `false` instead of `array` for `$iptc` and
`$exif` parameters to `wp_read_image_metadata` filter
 Reporter:  volodymyrkolesnykov  |      Owner:  (none)
     Type:  defect (bug)         |     Status:  new
 Priority:  normal               |  Milestone:  Awaiting Review
Component:  General              |    Version:  5.8.2
 Severity:  normal               |   Keywords:
  Focuses:                       |
 According to the documentation
 the `exif_read_metadata` filter expects its `$iptc` and `$exif` parameters
 to be arrays.

 However, under some circumstances `wp_read_image_metadata()` function
 passes `false` instead of arrays.

 This happens, for example, when `exif_read_data()` fails to parse
 metadata, in which case it returns `false` (see


 The shape of the returned value is never checked, WP just uses `empty()`
 function to see if specific keys are set (`empty()` will return false for

 Finally, that `false` is passed to the filter:

 The same story is with `iptcparse()`:

 I see two possible ways to fix this:
 1. Ensure that `$iptc` and `$exif` are arrays — check the return value of
 the parsing functions, or
 2. Update the documentation/PHP doc blocks to mention that those
 parameters can be `false`.

 I can submit a patch for this issue, just not sure which of the solutions
 is preferred.

Ticket URL: <https://core.trac.wordpress.org/ticket/54637>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list