]> git.ipfire.org Git - thirdparty/grub.git/commit
relocator: Fix grub_relocator_alloc_chunk_align() top memory allocation
authorAlexey Makhalov <amakhalov@vmware.com>
Fri, 17 Jul 2020 05:17:26 +0000 (05:17 +0000)
committerDaniel Kiper <daniel.kiper@oracle.com>
Wed, 29 Jul 2020 14:55:48 +0000 (16:55 +0200)
commit07e5b79e22fd58c5382323dd71d64aaa42f928ec
tree3c984ecb6ca177aa6495e6e2a1861483d834cbc7
parent426f57383d647406ae9c628c472059c27cd6e040
relocator: Fix grub_relocator_alloc_chunk_align() top memory allocation

Current implementation of grub_relocator_alloc_chunk_align()
does not allow allocation of the top byte.

Assuming input args are:
  max_addr = 0xfffff000;
  size = 0x1000;

And this is valid. But following overflow protection will
unnecessarily move max_addr one byte down (to 0xffffefff):
  if (max_addr > ~size)
    max_addr = ~size;

~size + 1 will fix the situation. In addition, check size
for non zero to do not zero max_addr.

Signed-off-by: Alexey Makhalov <amakhalov@vmware.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
grub-core/lib/relocator.c