Explorar o código

WebP/Lossy: Validate show_frame and version when reading header

Nico Weber %!s(int64=2) %!d(string=hai) anos
pai
achega
703bd4c8a3

+ 5 - 1
Userland/Libraries/LibGfx/ImageFormats/WebPLoaderLossy.cpp

@@ -43,7 +43,11 @@ ErrorOr<VP8Header> decode_webp_chunk_VP8_header(ReadonlyBytes vp8_data)
     if (!is_key_frame)
     if (!is_key_frame)
         return Error::from_string_literal("WebPImageDecoderPlugin: 'VP8 ' chunk not a key frame");
         return Error::from_string_literal("WebPImageDecoderPlugin: 'VP8 ' chunk not a key frame");
 
 
-    // FIXME: !show_frame does not make sense in a webp file either, probably?
+    if (!show_frame)
+        return Error::from_string_literal("WebPImageDecoderPlugin: 'VP8 ' chunk has invalid visibility for webp image");
+
+    if (version > 3)
+        return Error::from_string_literal("WebPImageDecoderPlugin: unknown version number in 'VP8 ' chunk");
 
 
     u32 start_code = data[3] | (data[4] << 8) | (data[5] << 16);
     u32 start_code = data[3] | (data[4] << 8) | (data[5] << 16);
     if (start_code != 0x2a019d) // https://www.rfc-editor.org/errata/eid7370
     if (start_code != 0x2a019d) // https://www.rfc-editor.org/errata/eid7370