[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 08/24] xsplice: Add helper elf routines
On 07/04/16 04:49, Konrad Rzeszutek Wilk wrote: > +static int elf_resolve_sections(struct xsplice_elf *elf, const void *data) > +{ > + struct xsplice_elf_sec *sec; > + unsigned int i; > + Elf_Off delta; > + int rc; > + > + /* xsplice_elf_load sanity checked e_shnum. */ > + sec = xmalloc_array(struct xsplice_elf_sec, elf->hdr->e_shnum); > + if ( !sec ) > + { > + printk(XENLOG_ERR XSPLICE"%s: Could not allocate memory for section > table!\n", > + elf->name); > + return -ENOMEM; > + } > + > + elf->sec = sec; > + > + delta = elf->hdr->e_shoff + elf->hdr->e_shnum * elf->hdr->e_shentsize; Have we verified any of these to be sane yet? (i.e. what about calculation overflow?) (Edit: e_shnum yes, e_shentsize and e_shoff look to be no) > + if ( delta >= elf->len ) > + { > + dprintk(XENLOG_DEBUG, XSPLICE "%s: Section table is past end of > payload!\n", > + elf->name); > + return -EINVAL; > + } (Mis)-alignment > +static int elf_get_sym(struct xsplice_elf *elf, const void *data) > +{ > + const struct xsplice_elf_sec *symtab_sec, *strtab_sec; > + struct xsplice_elf_sym *sym; > + unsigned int i, delta, offset, nsym; > + > + symtab_sec = elf->symtab; > + strtab_sec = elf->strtab; > + > + /* Pointers arithmetic to get file offset. */ > + offset = strtab_sec->data - data; > + > + /* Checked already in elf_resolve_sections, but just in case. */ > + ASSERT(offset == strtab_sec->sec->sh_offset); > + ASSERT(offset < elf->len && (offset + strtab_sec->sec->sh_size <= > elf->len)); > + > + /* symtab_sec->data was computed in elf_resolve_sections. */ > + ASSERT((symtab_sec->sec->sh_offset + data) == symtab_sec->data); > + > + /* No need to check values as elf_resolve_sections did it. */ > + nsym = symtab_sec->sec->sh_size / symtab_sec->sec->sh_entsize; Has anything checked sh_entsize for being 0 or -1 ? Being unsigned, -1 cant happen, but nothing checks got being nonzero. With these things fixed, Reviewed-by: Andrew Cooper<andrew.cooper3@xxxxxxxxxx> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |