[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [XEN] Sync Elf parsing with libxc parser.
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID cda7b6017a76add2d461e91af66b7d463859ded2 # Parent 461fc0bf91f545895899e1cbdac358b62dbae256 [XEN] Sync Elf parsing with libxc parser. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- xen/common/elf.c | 21 ++++++++++++++------- 1 files changed, 14 insertions(+), 7 deletions(-) diff -r 461fc0bf91f5 -r cda7b6017a76 xen/common/elf.c --- a/xen/common/elf.c Fri Jun 30 22:19:08 2006 +0100 +++ b/xen/common/elf.c Fri Jun 30 22:23:21 2006 +0100 @@ -95,7 +95,11 @@ int parseelfimage(struct domain_setup_in elf_pa_off = elf_pa_off_defined ? simple_strtoul(p+17, &p, 0) : virt_base; if ( elf_pa_off_defined && !virt_base_defined ) - goto bad_image; + { + printk("ERROR: Neither ELF_PADDR_OFFSET nor VIRT_BASE found in" + " __xen_guest section.\n"); + return -EINVAL; + } for ( h = 0; h < ehdr->e_phnum; h++ ) { @@ -104,7 +108,11 @@ int parseelfimage(struct domain_setup_in continue; vaddr = phdr->p_paddr - elf_pa_off + virt_base; if ( (vaddr + phdr->p_memsz) < vaddr ) - goto bad_image; + { + printk("ERROR: ELF program header %d is too large.\n", h); + return -EINVAL; + } + if ( vaddr < kernstart ) kernstart = vaddr; if ( (vaddr + phdr->p_memsz) > kernend ) @@ -127,7 +135,10 @@ int parseelfimage(struct domain_setup_in (dsi->v_kernentry < kernstart) || (dsi->v_kernentry > kernend) || (dsi->v_start > kernstart) ) - goto bad_image; + { + printk("ERROR: ELF start or entries are out of bounds.\n"); + return -EINVAL; + } if ( (p = strstr(guestinfo, "BSD_SYMTAB")) != NULL ) dsi->load_symtab = 1; @@ -139,10 +150,6 @@ int parseelfimage(struct domain_setup_in loadelfsymtab(dsi, 0); return 0; - - bad_image: - printk("Malformed ELF image.\n"); - return -EINVAL; } int loadelfimage(struct domain_setup_info *dsi) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |