07e5b79 relocator: Fix grub_relocator_alloc_chunk_align() top memory allocation

1 file Authored by Alexey Makhalov 3 years ago, Committed by Daniel Kiper 3 years ago,
    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>
    
        
file modified
+2 -2