Applied, thanks
On 20.07.2015 16:35, Daniel Kiper wrote:
> malloc_in_range() should not use memory region if its starta is smaller
> than size. Otherwise target wraps around and points to region which is
> usually not a RAM, e.g.:
> 
> loader/multiboot.c:93: segment 0: paddr=0x800000, memsz=0x3f800000, 
> vaddr=0x800000
> lib/relocator.c:1241: min_addr = 0x0, max_addr = 0xffffffffffffffff, target = 
> 0x800000
> lib/relocator.c:434: trying to allocate in 0x800000-0xffffffffffffffff 
> aligned 0x1 size 0x3f800000
> lib/relocator.c:434: trying to allocate in 0x0-0x800000 aligned 0x1 size 
> 0x3f800000
> lib/relocator.c:434: trying to allocate in 0x0-0xffffffffffffffff aligned 0x1 
> size 0x3f800000
> lib/relocator.c:1188: allocated: 0xffffffffc07fffff+0x3f800000
> lib/relocator.c:1277: allocated 0xffffffffc07fffff/0x800000
> 
> Signed-off-by: Daniel Kiper <daniel.ki...@oracle.com>
> ---
>  grub-core/lib/relocator.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/grub-core/lib/relocator.c b/grub-core/lib/relocator.c
> index f759c7f..4eee0c5 100644
> --- a/grub-core/lib/relocator.c
> +++ b/grub-core/lib/relocator.c
> @@ -748,7 +748,7 @@ malloc_in_range (struct grub_relocator *rel,
>             /* Found an usable address.  */
>             goto found;
>         }
> -     if (isinsidebefore && !isinsideafter && !from_low_priv)
> +     if (isinsidebefore && !isinsideafter && !from_low_priv && starta >= 
> size)
>         {
>           target = starta - size;
>           if (target > end - size)
> 


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to