From b34cbd1428405d1c64b071364bc90fe064b8b0c9 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Tue, 26 Apr 2005 04:26:13 +0000 Subject: * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h (INTERNAL_SYSCALL_ERROR_P): Fix typo in last change. * sunrpc/xdr.c (xdr_u_int): Use `long' for L and cast where needed. * elf/dl-load.c: Revert last change. --- elf/dl-load.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'elf') diff --git a/elf/dl-load.c b/elf/dl-load.c index 0d3fbb4..d8b3a56 100644 --- a/elf/dl-load.c +++ b/elf/dl-load.c @@ -55,6 +55,12 @@ # define MAP_COPY MAP_PRIVATE #endif +/* We want to prevent people from modifying DSOs which are currently in + use. This is what MAP_DENYWRITE is for. */ +#ifndef MAP_DENYWRITE +# define MAP_DENYWRITE 0 +#endif + /* Some systems link their relocatable objects for another base address than 0. We want to know the base address for these such that we can subtract this address from the segment addresses during mapping. @@ -1175,7 +1181,7 @@ cannot allocate TLS data structures for initial thread"); /* Remember which part of the address space this object uses. */ l->l_map_start = (ElfW(Addr)) __mmap ((void *) mappref, maplength, c->prot, - MAP_COPY | MAP_FILE, + MAP_COPY|MAP_FILE|MAP_DENYWRITE, fd, c->mapoff); if (__builtin_expect ((void *) l->l_map_start == MAP_FAILED, 0)) { -- cgit v1.1