From b4b64c82c8eac1751862c69a85386cb1fd7086f5 Mon Sep 17 00:00:00 2001 From: Tim Starling Date: Wed, 2 Sep 2015 16:07:38 +1000 Subject: [PATCH] In LocalFile normalize integer fields to integers File::getWidth() etc. should return an integer not a numeric string. Bug: T111089 Change-Id: Ic767fb6cf3db0be9810b7bfa369c209ec05a6e58 --- includes/filerepo/file/LocalFile.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/includes/filerepo/file/LocalFile.php b/includes/filerepo/file/LocalFile.php index 40705532a7..d2c37e614c 100644 --- a/includes/filerepo/file/LocalFile.php +++ b/includes/filerepo/file/LocalFile.php @@ -502,9 +502,17 @@ class LocalFile extends File { $decoded['mime'] = $decoded['major_mime'] . '/' . $decoded['minor_mime']; } - # Trim zero padding from char/binary field + // Trim zero padding from char/binary field $decoded['sha1'] = rtrim( $decoded['sha1'], "\0" ); + // Normalize some fields to integer type, per their database definition. + // Use unary + so that overflows will be upgraded to double instead of + // being trucated as with intval(). This is important to allow >2GB + // files on 32-bit systems. + foreach ( array( 'size', 'width', 'height', 'bits' ) as $field ) { + $decoded[$field] = +$decoded[$field]; + } + return $decoded; } -- 2.20.1