Idan Horowitz
1a35621930
LibGfx: Eliminate multiplication integer overflow in planar_to_chunky
...
Multiplying two u16s will result in a i32 sized result, which will
overflow to negative values for large input values.
Fixes ossfuzz-64198.
2023-12-02 11:46:03 +01:00
Sam Atkins
2c24192e1f
LibGfx: Move FourCC to its own file
...
These are used in fonts too, so let's not limit them to ImageLoader.
2023-11-24 08:42:46 +01:00
Tim Ledbetter
b96a5f4265
LibGfx/ILBM: Avoid overflow when creating bitplane data buffer
2023-11-08 09:36:01 +01:00
Tim Ledbetter
5e1017bcf1
LibGfx/ILBM: Avoid buffer overrun when reading bitplane data
2023-11-08 09:36:01 +01:00
Tim Ledbetter
f56ae8c0e9
LibGfx/ILBM: Ensure CMAP chunk size matches expected value
...
The color map should be 3 bytes per pixel and should contain
`2^nPlanes` pixels. We now return an error if the color map isn't the
size we expect.
2023-11-08 09:36:01 +01:00
Tim Ledbetter
61eb754f63
LibGfx/ILBM: Add validation for header fields
...
We now exit early if a header field is set to a value that we don't
currently support.
2023-11-08 09:36:01 +01:00
Tim Ledbetter
bed7b33daa
LibGfx/ILBM: Don't attempt to decode a BODY chunk without a color map
...
While this isn't disallowed by the specification, it is not something
we currently support. Instead of crashing we now return an error in
this case.
2023-11-08 09:36:01 +01:00
Tim Ledbetter
75731f9c50
LibGfx/ILBM: Avoid buffer overruns when decompressing data
2023-11-08 09:36:01 +01:00
Tim Ledbetter
ae6c39e501
LibGfx/ILBM: Ensure decompressed body chunk data is the correct length
2023-11-08 09:36:01 +01:00
Lucas CHOLLET
e721c74598
LibGfx: Provide an implementation for ImageDecoderPlugin::icc_data()
2023-10-29 07:21:10 +00:00
Tim Ledbetter
f4a89c31c6
LibGfx/ILBM: Explicitly fail decoding if body chunk isn't present
...
Previously, the decoder would crash in this case.
2023-10-17 10:24:27 +02:00
Tim Ledbetter
9e3ee0e2b5
LibGfx/ILBM: Avoid buffer overrun when reading header chunk
2023-10-15 08:37:27 +02:00
Nicolas Ramz
7b4b5b735b
LibGfx/ILBMLoader: Add support for EHB mode
2023-10-03 16:09:55 -06:00
Nicolas Ramz
b8f8b22aa5
LibGfx/ILBM: Add support for uncompressed files
2023-09-14 21:00:54 +01:00
Nicolas Ramz
fda5590313
LibGfx/ILBM: Add an IFF-ILBM decoder :)
...
IFF was a generic container fileformat that was popular on the Amiga
since it was the only file format supported by Deluxe Paint.
ILBM is an image format popular in the late eighties/nineties
that uses the IFF container.
This is a very first version of the decoder that only supports
(byterun) compressed files with bpp <= 8.
Only the minimal chunks are decoded: CMAP, BODY, BMHD.
I am planning to add support for the following variants:
- EHB (32 colours + lighter 32 colours)
- HAM6 / HAM8 (special mode that allowed to display the whole Amiga
4096 colours / 262 144 colours palette)
- TrueColor (24bit)
Things that could be fun to do:
- Still images could be animated using color cycle information
2023-08-15 18:36:11 +01:00