Add safety abort in UserAvatarEditor::createAvatarVariant() for WebP originals
authorTim Düsterhus <duesterhus@woltlab.com>
Tue, 31 Jan 2023 08:50:36 +0000 (09:50 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Tue, 31 Jan 2023 08:50:36 +0000 (09:50 +0100)
wcfsetup/install/files/lib/data/user/avatar/UserAvatarEditor.class.php

index f8352f08a7e804ac635bbef297eb5826520a2052..f92cec43c83826418d6dbc2a9002ee975366a389 100644 (file)
@@ -3,6 +3,7 @@
 namespace wcf\data\user\avatar;
 
 use wcf\data\DatabaseObjectEditor;
+use wcf\system\exception\NotImplementedException;
 use wcf\system\image\ImageHandler;
 use wcf\system\WCF;
 use wcf\util\FileUtil;
@@ -119,6 +120,13 @@ class UserAvatarEditor extends DatabaseObjectEditor
         // If the uploaded avatar is already a WebP image, then create a JPEG
         // as a fallback image and flip the image data to match the JPEG.
         if ($this->avatarExtension === "webp") {
+            // This entire code path is completely broken, because writing into the
+            // ->data array of the UserAvatarEditor does not actually do anything
+            // for ->getLocation(), which is a method on the base UserAvatar.
+            // This is also unreachable, because WebP files are rejected unconditionally
+            // in AvatarUploadFileValidationStrategy.
+            throw new NotImplementedException();
+
             $filenameJpeg = \preg_replace('~\.webp$~', '.jpeg', $filenameWebP);
 
             $imageAdapter->saveImageAs($image, $filenameJpeg, "jpeg", 80);