When iterating over the dso program headers, the object is not initialized
yet, and object segments are not yet mapped. Only parse the notes that appear in the first page of the dso (as it should be anyway), and use the preloaded page content. Reported and tested by: stass MFC after: 20 days
This commit is contained in:
parent
ea14701c38
commit
7654527e54
@ -149,7 +149,10 @@ map_object(int fd, const char *path, const struct stat *sb)
|
||||
break;
|
||||
|
||||
case PT_NOTE:
|
||||
note_start = (Elf_Addr)obj->relocbase + phdr->p_offset;
|
||||
if (phdr->p_offset > PAGE_SIZE ||
|
||||
phdr->p_offset + phdr->p_filesz > PAGE_SIZE)
|
||||
break;
|
||||
note_start = (Elf_Addr)(char *)hdr + phdr->p_offset;
|
||||
note_end = note_start + phdr->p_filesz;
|
||||
digest_notes(obj, note_start, note_end);
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user