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
c8b31c8f20
commit
5eab36f290
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=232856
@ -149,7 +149,10 @@ map_object(int fd, const char *path, const struct stat *sb)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case PT_NOTE:
|
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;
|
note_end = note_start + phdr->p_filesz;
|
||||||
digest_notes(obj, note_start, note_end);
|
digest_notes(obj, note_start, note_end);
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user