LibGfx: Limit ICC-size-is-multiple-of-4 check to v4 files
The v2 spec doesn't require it, and it's not true in practice (e.g. Compact-ICC-Profiles/profiles/sRGB-v2-nano.icc has size 410).
This commit is contained in:
parent
bed86fb578
commit
1f0b54c857
Notes:
sideshowbarker
2024-07-16 21:43:44 +09:00
Author: https://github.com/nico Commit: https://github.com/SerenityOS/serenity/commit/1f0b54c857 Pull-request: https://github.com/SerenityOS/serenity/pull/18260 Reviewed-by: https://github.com/trflynn89 ✅
1 changed files with 6 additions and 1 deletions
|
@ -74,7 +74,12 @@ ErrorOr<u32> parse_size(ICCHeader const& header, ReadonlyBytes icc_bytes)
|
|||
|
||||
// ICC v4, 7.1.2:
|
||||
// "NOTE 1 This implies that the length is required to be a multiple of four."
|
||||
if (header.profile_size % 4 != 0)
|
||||
// The ICC v2 spec doesn't have this note. It instead has:
|
||||
// ICC v2, 6.2.2 Offset:
|
||||
// "All tag data is required to start on a 4-byte boundary"
|
||||
// And indeed, there are files in the wild where the last tag has a size that isn't a multiple of four,
|
||||
// resulting in an ICC file whose size isn't a multiple of four either.
|
||||
if (header.profile_version_major >= 4 && header.profile_size % 4 != 0)
|
||||
return Error::from_string_literal("ICC::Profile: Profile size not a multiple of four");
|
||||
|
||||
return header.profile_size;
|
||||
|
|
Loading…
Add table
Reference in a new issue