[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 10/16] libelf: check all pointer accesses
Matthew Daley writes ("Re: [PATCH 10/16] libelf: check all pointer accesses"): > On Tue, Jun 4, 2013 at 3:41 AM, Ian Jackson <ian.jackson@xxxxxxxxxxxxx> wrote: > > +static int elf_ptrval_in_range(elf_ptrval ptrval, uint64_t size, > > + const void *region, uint64_t regionsize) > > + /* > > + * Returns true if the putative memory area [ptrval,ptrval+size> > > + * is completely inside the region [region,region+regionsize>. > > + * > > + * ptrval and size are the untrusted inputs to be checked. > > + * region and regionsize are trusted and must be correct and valid. > > + */ > > +{ > > + elf_ptrval regionp = (elf_ptrval)region; > > + > > + if ( (ptrval < regionp) || /* start is before region */ > > + (ptrval > regionp + regionsize) || /* start is after region */ > > Should be >=, not >, FWIW. I think this is correct. If size==0, ptrval == regionp+regionsize is OK. If size>0 and ptrval==regionp+regionsize then `regionsize - (ptrval - regionp)' is 0 and we fail. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |