svn commit: r324949 - head/libexec/rtld-elf
Edward Tomasz Napierala
trasz at FreeBSD.org
Tue Oct 24 10:48:28 UTC 2017
Author: trasz
Date: Tue Oct 24 10:48:26 2017
New Revision: 324949
URL: https://svnweb.freebsd.org/changeset/base/324949
Log:
Use xmalloc and read(2) instead of mmap(2) to read in libmap.conf(5).
This removes the need to call munmap(2) afterwards.
MFC after: 2 weeks
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D12767
Modified:
head/libexec/rtld-elf/libmap.c
Modified: head/libexec/rtld-elf/libmap.c
==============================================================================
--- head/libexec/rtld-elf/libmap.c Tue Oct 24 08:56:11 2017 (r324948)
+++ head/libexec/rtld-elf/libmap.c Tue Oct 24 10:48:26 2017 (r324949)
@@ -100,6 +100,7 @@ lmc_parse_file(char *path)
{
struct lmc *p;
struct stat st;
+ ssize_t retval;
int fd;
char *lm_map;
@@ -128,10 +129,11 @@ lmc_parse_file(char *path)
}
}
- lm_map = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
- if (lm_map == (const char *)MAP_FAILED) {
+ lm_map = xmalloc(st.st_size);
+ retval = read(fd, lm_map, st.st_size);
+ if (retval != st.st_size) {
close(fd);
- dbg("lm_parse_file: mmap(\"%s\") failed, %s", path,
+ dbg("lm_parse_file: read(\"%s\") failed, %s", path,
rtld_strerror(errno));
return;
}
@@ -142,7 +144,7 @@ lmc_parse_file(char *path)
p->ino = st.st_ino;
TAILQ_INSERT_HEAD(&lmc_head, p, next);
lmc_parse(lm_map, st.st_size);
- munmap(lm_map, st.st_size);
+ free(lm_map);
}
static void
More information about the svn-src-head
mailing list