There is an issue on grub2 before version 2.06 at function readsectionasstring(). It expects a font name to be at max UINT32MAX - 1 length in bytes but it doesn't verify it before proceed with buffer allocation to read the value from the font value. An attacker may leverage that by crafting a malicious font file which has a name with UINT32MAX, leading to readsectionasstring() to an arithmetic overflow, zero-sized allocation and further heap-based buffer overflow.