Changeset View
Changeset View
Standalone View
Standalone View
devel/elfutils/files/patch-libelf_elf__update.c
- This file was moved from devel/elfutils/files/patch-libelf_elf_update.c.
--- libelf/elf_update.c.orig 2018-09-14 03:23:36.000000000 -0700 | --- libelf/elf_update.c.orig 2020-03-30 12:17:45 UTC | ||||
+++ libelf/elf_update.c | +++ libelf/elf_update.c | ||||
@@ -106,9 +106,13 @@ | @@ -106,9 +106,13 @@ write_file (Elf *elf, int64_t size, int change_bo, siz | ||||
if (elf->cmd == ELF_C_RDWR_MMAP | if (elf->cmd == ELF_C_RDWR_MMAP | ||||
&& (size_t) size > elf->maximum_size) | && (size_t) size > elf->maximum_size) | ||||
{ | { | ||||
- if (mremap (elf->map_address, elf->maximum_size, | - if (mremap (elf->map_address, elf->maximum_size, | ||||
- size, 0) == MAP_FAILED) | - size, 0) == MAP_FAILED) | ||||
+ if (munmap (elf->map_address, elf->maximum_size) != 0 || | + if (munmap (elf->map_address, elf->maximum_size) != 0 || | ||||
+ mmap (elf->map_address, size, PROT_READ | PROT_WRITE, | + mmap (elf->map_address, size, PROT_READ | PROT_WRITE, | ||||
+ MAP_SHARED | MAP_FIXED | MAP_EXCL, elf->fildes, | + MAP_SHARED | MAP_FIXED | MAP_EXCL, elf->fildes, | ||||
+ 0) == MAP_FAILED) | + 0) == MAP_FAILED) | ||||
{ | { | ||||
+ elf->map_address = NULL; | + elf->map_address = NULL; | ||||
+ elf->flags &= ~ELF_F_MMAPPED; | + elf->flags &= ~ELF_F_MMAPPED; | ||||
__libelf_seterrno (ELF_E_WRITE_ERROR); | __libelf_seterrno (ELF_E_WRITE_ERROR); | ||||
return -1; | return -1; | ||||
} | } |