mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-20 09:49:15 +03:00
LibGfx/OpenType: Add validation for OpenType head table values
Previously, a crash would occur if a font file had an invalid IndexToLocFormat value.
This commit is contained in:
parent
87a4a5b302
commit
1eae02a018
Notes:
sideshowbarker
2024-07-17 18:46:30 +09:00
Author: https://github.com/tcl3 Commit: https://github.com/SerenityOS/serenity/commit/1eae02a018 Pull-request: https://github.com/SerenityOS/serenity/pull/21881
@ -32,6 +32,17 @@ ErrorOr<Head> Head::from_slice(ReadonlyBytes slice)
|
||||
return Error::from_string_literal("Could not load Head: Not enough data");
|
||||
|
||||
auto const& font_header_table = *bit_cast<FontHeaderTable const*>(slice.data());
|
||||
|
||||
static constexpr u32 HEADER_TABLE_MAGIC_NUMBER = 0x5F0F3CF5;
|
||||
if (font_header_table.major_version != 1)
|
||||
return Error::from_string_literal("Unknown major version. Expected 1");
|
||||
if (font_header_table.minor_version != 0)
|
||||
return Error::from_string_literal("Unknown minor version. Expected 0");
|
||||
if (font_header_table.magic_number != HEADER_TABLE_MAGIC_NUMBER)
|
||||
return Error::from_string_literal("Invalid magic number");
|
||||
if (font_header_table.index_to_loc_format != 0 && font_header_table.index_to_loc_format != 1)
|
||||
return Error::from_string_literal("Invalid IndexToLocFormat value");
|
||||
|
||||
return Head(font_header_table);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user