浏览代码

LibGfx: Don't assume that image decoder plugin creation succeeds

An image with an incorrect header should fail at this step, so we have
to handle that without crashing.
Lucas CHOLLET 1 年之前
父节点
当前提交
7b72bf29
共有 1 个文件被更改,包括 5 次插入3 次删除
  1. 5 3
      Userland/Libraries/LibGfx/ImageFormats/ImageDecoder.cpp

+ 5 - 3
Userland/Libraries/LibGfx/ImageFormats/ImageDecoder.cpp

@@ -48,9 +48,11 @@ static OwnPtr<ImageDecoderPlugin> probe_and_sniff_for_appropriate_plugin(Readonl
         auto sniff_result = plugin.sniff(bytes);
         if (!sniff_result)
             continue;
-        auto plugin_decoder = plugin.create(bytes).release_value_but_fixme_should_propagate_errors();
-        if (!plugin_decoder->initialize().is_error())
-            return plugin_decoder;
+        auto plugin_decoder = plugin.create(bytes);
+        if (!plugin_decoder.is_error()) {
+            if (!plugin_decoder.value()->initialize().is_error())
+                return plugin_decoder.release_value();
+        }
     }
     return {};
 }