mm: Avoid integer overflow.
This commit is contained in:
parent
fabde8324d
commit
59ec05bcf8
1 changed files with 9 additions and 0 deletions
|
@ -325,6 +325,15 @@ grub_memalign (grub_size_t align, grub_size_t size)
|
||||||
if (!grub_mm_base)
|
if (!grub_mm_base)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
if (size > ~(grub_size_t) align)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
/* We currently assume at least a 32-bit grub_size_t,
|
||||||
|
so limiting allocations to <adress space size> - 1MiB
|
||||||
|
in name of sanity is beneficial. */
|
||||||
|
if ((size + align) > ~(grub_size_t) 0x100000)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
align = (align >> GRUB_MM_ALIGN_LOG2);
|
align = (align >> GRUB_MM_ALIGN_LOG2);
|
||||||
if (align == 0)
|
if (align == 0)
|
||||||
align = 1;
|
align = 1;
|
||||||
|
|
Loading…
Reference in a new issue