From e020b1183d18dbc483744addb2f4dcd8bf31f5ad Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Sun, 20 Sep 2020 14:26:38 +0000 Subject: [PATCH] Media: Return a `WP_Error` from `WP_Image_Editor_GD::load()` if file contents could not be retrieved. This avoids an error on PHP 8 caused by calling `imagecreatefromstring()` on an empty result. See #50913. git-svn-id: https://develop.svn.wordpress.org/trunk@49019 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-image-editor-gd.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-image-editor-gd.php b/src/wp-includes/class-wp-image-editor-gd.php index 4fa1fe24fa..abf03c869b 100644 --- a/src/wp-includes/class-wp-image-editor-gd.php +++ b/src/wp-includes/class-wp-image-editor-gd.php @@ -93,13 +93,20 @@ class WP_Image_Editor_GD extends WP_Image_Editor { // Set artificially high because GD uses uncompressed images in memory. wp_raise_memory_limit( 'image' ); - $this->image = @imagecreatefromstring( file_get_contents( $this->file ) ); + $file_contents = @file_get_contents( $this->file ); + + if ( ! $file_contents ) { + return new WP_Error( 'error_loading_image', __( 'File doesn’t exist?' ), $this->file ); + } + + $this->image = @imagecreatefromstring( $file_contents ); if ( ! is_gd_image( $this->image ) ) { return new WP_Error( 'invalid_image', __( 'File is not an image.' ), $this->file ); } $size = @getimagesize( $this->file ); + if ( ! $size ) { return new WP_Error( 'invalid_image', __( 'Could not read image size.' ), $this->file ); }