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) >
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel