From: Sam Wilson Date: Sat, 30 Jun 2018 07:55:47 +0000 (+0800) Subject: Guard against uncountable tag values X-Git-Tag: 1.31.1~9 X-Git-Url: https://git.cyclocoop.org/?a=commitdiff_plain;h=b9cc61f6c4b06676ba08bda5ded1e790749f00ac;p=lhc%2Fweb%2Fwiklou.git Guard against uncountable tag values As of PHP 7.2 counting false or null raises a "Warning: count(): Parameter must be an array or an object that implements Countable". Bug: T182377 Bug: T196793 Change-Id: I7ca38bc55ae04f68106fe0d27c7d496da1538459 (cherry picked from commit 61af022e5f8e06c2588a8fc3fd003f52bdb85b08) --- diff --git a/RELEASE-NOTES-1.31 b/RELEASE-NOTES-1.31 index 4841f779df..cf103549a2 100644 --- a/RELEASE-NOTES-1.31 +++ b/RELEASE-NOTES-1.31 @@ -15,6 +15,7 @@ This is a security and maintenance release of the MediaWiki 1.31 branch. * (T151415) Log email changes. * (T197206) Fix performance regression when multiple DB used without caching. * (T197030) PHPSessionHandler: Suppress headers warnings in initialize(). +* (T182377, T196793) Exif: Guard against uncountable tag values. === Changes since MediaWiki 1.31.0-rc.2 === * (T195783) Initialize PSR-4 namespaces at same stage as normal autoloader. diff --git a/includes/media/Exif.php b/includes/media/Exif.php index a38e79b725..70f8d5c029 100644 --- a/includes/media/Exif.php +++ b/includes/media/Exif.php @@ -742,12 +742,16 @@ class Exif { $ecount = 1; // checking individual elements } } - $count = count( $val ); - if ( $ecount != $count ) { - $this->debug( $val, __FUNCTION__, "Expected $ecount elements for $tag but got $count" ); - return false; + $count = 1; + if ( is_array( $val ) ) { + $count = count( $val ); + if ( $ecount != $count ) { + $this->debug( $val, __FUNCTION__, "Expected $ecount elements for $tag but got $count" ); + return false; + } } + // If there are multiple values, recursively validate each of them. if ( $count > 1 ) { foreach ( $val as $v ) { if ( !$this->validate( $section, $tag, $v, true ) ) {