Print this page
OS-5293 lx brand: prelink(8)'d binaries core dump before main()
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
*** 1358,1371 ****
MOBJ_STAT_ADD(nomem_header);
continue;
}
if (num_segs++ == 0) {
/*
! * The p_vaddr of the first PT_LOAD segment
! * must either be NULL or within the first
! * page in order to be interpreted.
! * Otherwise, its an invalid file.
*/
if (e_type == ET_DYN &&
((caddr_t)((uintptr_t)vaddr &
(uintptr_t)PAGEMASK) != NULL)) {
MOBJ_STAT_ADD(inval_header);
--- 1358,1376 ----
MOBJ_STAT_ADD(nomem_header);
continue;
}
if (num_segs++ == 0) {
/*
! * While ELF doesn't specify the meaning of
! * p_vaddr for PT_LOAD segments in ET_DYN
! * objects, we mandate that is either NULL or
! * (to accommodate some historical binaries)
! * within the first page. (Note that there
! * exist non-native ET_DYN objects that violate
! * this constraint that we nonetheless must be
! * able to execute; see the ET_DYN handling in
! * mapelfexec() for details.)
*/
if (e_type == ET_DYN &&
((caddr_t)((uintptr_t)vaddr &
(uintptr_t)PAGEMASK) != NULL)) {
MOBJ_STAT_ADD(inval_header);