Old (a.out) rtld attempts to mmap zero-length region, e.g. when bss
of the linked object is zero-length. More old code assumes that mmap of zero length returns success. For a.out and pre-8 ELF binaries, allow the mmap of zero length. Reported by: tegge Reviewed by: tegge, alc, jhb MFC after: 3 days
This commit is contained in:
parent
4b6492f5ab
commit
497a82382b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=197348
@ -64,6 +64,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include <sys/mount.h>
|
||||
#include <sys/conf.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/sysent.h>
|
||||
#include <sys/vmmeter.h>
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
@ -229,7 +230,8 @@ mmap(td, uap)
|
||||
|
||||
fp = NULL;
|
||||
/* make sure mapping fits into numeric range etc */
|
||||
if (uap->len == 0 ||
|
||||
if ((uap->len == 0 && !SV_CURPROC_FLAG(SV_AOUT) &&
|
||||
curproc->p_osrel >= 800104) ||
|
||||
((flags & MAP_ANON) && uap->fd != -1))
|
||||
return (EINVAL);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user