Merge "linker: fix off-by-one error in GNU_RELRO handling"

This commit is contained in:
Nick Kralevich 2012-03-20 10:52:42 -07:00 committed by Android (Google) Code Review
commit aac0dc97a9

View File

@ -1030,7 +1030,7 @@ load_segments(int fd, void *header, soinfo *si)
si->dynamic = (unsigned *)(base + phdr->p_vaddr);
} else if (phdr->p_type == PT_GNU_RELRO) {
if ((phdr->p_vaddr >= si->size)
|| ((phdr->p_vaddr + phdr->p_memsz) >= si->size)
|| ((phdr->p_vaddr + phdr->p_memsz) > si->size)
|| ((base + phdr->p_vaddr + phdr->p_memsz) < base)) {
DL_ERR("%d invalid GNU_RELRO in '%s' "
"p_vaddr=0x%08x p_memsz=0x%08x", pid, si->name,
@ -1779,7 +1779,7 @@ static int link_image(soinfo *si, unsigned wr_offset)
si->dynamic = (unsigned *) (si->base + phdr->p_vaddr);
} else if (phdr->p_type == PT_GNU_RELRO) {
if ((phdr->p_vaddr >= si->size)
|| ((phdr->p_vaddr + phdr->p_memsz) >= si->size)
|| ((phdr->p_vaddr + phdr->p_memsz) > si->size)
|| ((si->base + phdr->p_vaddr + phdr->p_memsz) < si->base)) {
DL_ERR("%d invalid GNU_RELRO in '%s' "
"p_vaddr=0x%08x p_memsz=0x%08x", pid, si->name,