diff options
Diffstat (limited to 'fix-gnustack.c')
-rw-r--r-- | fix-gnustack.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/fix-gnustack.c b/fix-gnustack.c index 8ddb28c..357c76f 100644 --- a/fix-gnustack.c +++ b/fix-gnustack.c @@ -27,7 +27,7 @@ int main( int argc, char *argv[]) if(argc != 2) error(EXIT_FAILURE, 0, "Usage: %s <filename>", argv[0]); - if((fd = open(argv[1], O_RDONLY)) == -1) + if((fd = open(argv[1], O_RDWR)) == -1) error(EXIT_FAILURE, 0, "open() fail."); if((elf = elf_begin(fd, ELF_C_RDWR, (Elf *)0)) == NULL) @@ -59,13 +59,13 @@ int main( int argc, char *argv[]) nflags = phdr.p_flags ^ PF_X; printf("oflags=%u PF_X=%d nflags=%u\n", phdr.p_flags, PF_X, nflags); - if(elf_update(elf, ELF_C_NULL ) < 0) - error (EXIT_FAILURE, "elf_update(ELF_C_NULL) failed: %s." , elf_errmsg(-1)); + //if(elf_update(elf, ELF_C_NULL ) < 0) + // error (EXIT_FAILURE, 0, "elf_update(ELF_C_NULL) failed: %s.", elf_errmsg(-1)); phdr.p_flags = nflags ; - if(elf_flagphdr(elf, ELF_C_SET, ELF_F_DIRTY) == NULL) + if(elf_flagphdr(elf, ELF_C_SET, ELF_F_DIRTY) == 0) error(EXIT_FAILURE, 0, "gelf_flagphdr() fail: %s", elf_errmsg(-1)); if(elf_update(elf, ELF_C_WRITE) < 0) - error (EXIT_FAILURE, "elf_update(ELF_C_WRITE) failed: %s." , elf_errmsg(-1)); + error (EXIT_FAILURE, 0, "elf_update(ELF_C_WRITE) failed: %s.", elf_errmsg(-1)); } } } |