From 27fa498966222482996a3b1efb0e0b1910e4145e Mon Sep 17 00:00:00 2001 From: Steve Campbell Date: Mon, 17 Jul 2023 13:25:32 +0100 Subject: [PATCH] Fix PHP 8.1 strlen(null) error in PhabricatorFile::newChunkedFile() Summary: Fix PHP 8.1 strlen(null) error in PhabricatorFile::newChunkedFile(). Fixes T15499 Test Plan: Added a unit test which replicated the fault, so you can test simply by 'arc unit' Alternatively, see test in T15499 Reviewers: O1 Blessed Committers, avivey Reviewed By: O1 Blessed Committers, avivey Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno Maniphest Tasks: T15499 Differential Revision: https://we.phorge.it/D25352 --- src/applications/files/storage/PhabricatorFile.php | 2 +- .../files/storage/__tests__/PhabricatorFileTestCase.php | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/applications/files/storage/PhabricatorFile.php b/src/applications/files/storage/PhabricatorFile.php index 44e35c6b72..6782a5a90e 100644 --- a/src/applications/files/storage/PhabricatorFile.php +++ b/src/applications/files/storage/PhabricatorFile.php @@ -287,7 +287,7 @@ final class PhabricatorFile extends PhabricatorFileDAO // NOTE: Once we receive the first chunk, we'll detect its MIME type and // update the parent file if a MIME type hasn't been provided. This matters // for large media files like video. - $mime_type = idx($params, 'mime-type'); + $mime_type = idx($params, 'mime-type', ''); if (!strlen($mime_type)) { $file->setMimeType('application/octet-stream'); } diff --git a/src/applications/files/storage/__tests__/PhabricatorFileTestCase.php b/src/applications/files/storage/__tests__/PhabricatorFileTestCase.php index 21cb2daf11..21ad929c3f 100644 --- a/src/applications/files/storage/__tests__/PhabricatorFileTestCase.php +++ b/src/applications/files/storage/__tests__/PhabricatorFileTestCase.php @@ -532,4 +532,11 @@ final class PhabricatorFileTestCase extends PhabricatorTestCase { $this->assertEqual(array(), $alternate_c); } + public function testNewChunkedFile() { + $engine = new PhabricatorTestStorageEngine(); + $file = PhabricatorFile::newChunkedFile($engine, 10, []); + $this->assertTrue($file instanceof PhabricatorFile, + pht('newChunkedFile returns a PhabricatorFile')); + } + }