diff --git a/Userland/Libraries/LibTTF/Font.cpp b/Userland/Libraries/LibTTF/Font.cpp index e4236c44e9..39ef6754a2 100644 --- a/Userland/Libraries/LibTTF/Font.cpp +++ b/Userland/Libraries/LibTTF/Font.cpp @@ -241,6 +241,11 @@ RefPtr Font::load_from_memory(ByteBuffer& buffer, unsigned index) // FIXME: "loca" and "glyf" are not available for CFF fonts. RefPtr Font::load_from_offset(ByteBuffer&& buffer, u32 offset) { + if (Checked::addition_would_overflow(offset, (u32)Sizes::OffsetTable)) { + dbgln("Invalid offset in font header"); + return nullptr; + } + if (buffer.size() < offset + (u32)Sizes::OffsetTable) { dbgln("Font file too small"); return nullptr;