From: Rich Felker Date: Fri, 5 Mar 2021 16:09:32 +0000 (-0500) Subject: don't fail to map library/executable with zero-length segment maps X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=cfdfd5ea3ce14c6abf7fb22a531f3d99518b5a1b;p=musl don't fail to map library/executable with zero-length segment maps reportedly the GNU linker can emit such segments, causing spurious failure to load due to mmap with a length of zero producing EINVAL. no action is required for such a load map (it's effectively a nop in the program headers table) so just treat it as always successful. --- diff --git a/ldso/dynlink.c b/ldso/dynlink.c index 6b868c84..aaadcce0 100644 --- a/ldso/dynlink.c +++ b/ldso/dynlink.c @@ -579,6 +579,7 @@ static void *mmap_fixed(void *p, size_t n, int prot, int flags, int fd, off_t of { static int no_map_fixed; char *q; + if (!n) return p; if (!no_map_fixed) { q = mmap(p, n, prot, flags|MAP_FIXED, fd, off); if (!DL_NOMMU_SUPPORT || q != MAP_FAILED || errno != EINVAL)