From: Rich Felker Date: Sat, 25 Jun 2011 16:26:08 +0000 (-0400) Subject: fix possible (questionable) strict aliasing violations and ptr arith X-Git-Tag: v0.7.11~27 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=59633c736dcf6dcd11c24edab4803c85b8462bf6;p=oweals%2Fmusl.git fix possible (questionable) strict aliasing violations and ptr arith --- diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c index f57485da..56ba89eb 100644 --- a/src/ldso/dynlink.c +++ b/src/ldso/dynlink.c @@ -123,7 +123,7 @@ static void do_relocs(unsigned char *base, size_t *rel, size_t rel_size, size_t static void *map_library(int fd, size_t *lenp, unsigned char **basep, size_t *dynp) { - size_t buf[896/sizeof(size_t)]; + Ehdr buf[(896+sizeof(Ehdr))/sizeof(Ehdr)]; size_t phsize; size_t addr_min=SIZE_MAX, addr_max=0, map_len; size_t this_min, this_max; @@ -137,11 +137,11 @@ static void *map_library(int fd, size_t *lenp, unsigned char **basep, size_t *dy ssize_t l = read(fd, buf, sizeof buf); if (le_phentsize * eh->e_phnum; if (phsize + sizeof *eh > l) return 0; if (eh->e_phoff + phsize > l) { - l = pread(fd, buf+sizeof *eh, phsize, eh->e_phoff); + l = pread(fd, buf+1, phsize, eh->e_phoff); if (l != phsize) return 0; eh->e_phoff = sizeof *eh; }