]> git.proxmox.com Git - grub2.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)
committerColin Watson <cjwatson@debian.org>
Fri, 24 Jul 2020 21:43:55 +0000 (22:43 +0100)
commitdcc097ac0531485f0785816469370bfcb1a29f60
tree96de3b9baf5873d06593302996b26307b0708853
parentfdc80d2460e5d3b54f5cde8657f9e171b0b9a376
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>
Patch-Name: relocator-chunk-align-fix-top.patch
grub-core/lib/relocator.c