From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1R5IEZ-0004N3-DN for garchives@archives.gentoo.org; Sun, 18 Sep 2011 14:20:39 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 10AF221C102; Sun, 18 Sep 2011 14:20:30 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id C05E121C102 for ; Sun, 18 Sep 2011 14:20:30 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 283D01B400B for ; Sun, 18 Sep 2011 14:20:30 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 569E480042 for ; Sun, 18 Sep 2011 14:20:29 +0000 (UTC) From: "Anthony G. Basile" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Anthony G. Basile" Message-ID: Subject: [gentoo-commits] proj/elfix:master commit in: src/ X-VCS-Repository: proj/elfix X-VCS-Files: src/paxctl-ng.c X-VCS-Directories: src/ X-VCS-Committer: blueness X-VCS-Committer-Name: Anthony G. Basile X-VCS-Revision: d7add1d5f80d33c20b636e4cce0cdd03a5155d35 Date: Sun, 18 Sep 2011 14:20:29 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 6c8f3e479844bdcd55ae8262dd1ffd26 commit: d7add1d5f80d33c20b636e4cce0cdd03a5155d35 Author: Anthony G. Basile gentoo org> AuthorDate: Sun Sep 18 14:20:22 2011 +0000 Commit: Anthony G. Basile gentoo org> CommitDate: Sun Sep 18 14:20:22 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/elfix.git;a=3D= commit;h=3Dd7add1d5 src/paxctl-ng.c: set PT_PAX flags --- src/paxctl-ng.c | 49 ++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/paxctl-ng.c b/src/paxctl-ng.c index 3842d08..9d6a76e 100644 --- a/src/paxctl-ng.c +++ b/src/paxctl-ng.c @@ -53,11 +53,11 @@ print_help(char *v) "Description : Get or set pax flags on an ELF object\n\n" "Usage : %s [-PpEeMmRrXxSsv ELF] | [-Z ELF] | [-z ELF] | [-h]\n= \n" "Options : -P enable PAGEEXEC\t-p disable PAGEEXEC\n" - " : -E enable EMUTRAMP\t-e disable EMUTRAMP\n" + " : -S enable SEGMEXEC\t-s disable SEGMEXEC\n" " : -M enable MPROTECT\t-m disable MPROTECT\n" + " : -E enable EMUTRAMP\t-e disable EMUTRAMP\n" " : -R enable RANDMMAP\t-r disable RANDMMAP\n" " : -X enable RANDEXEC\t-x disable RANDEXEC\n" - " : -S enable SEGMEXEC\t-s disable SEGMEXEC\n" " : -Z most secure settings\t-z all default settings\n" " : -v view the flags\n" " : -h print out this help\n\n" @@ -292,22 +292,57 @@ set_flags(Elf *elf, int *pax_flags) if(!gelf_update_ehdr(elf, &ehdr)) error(EXIT_FAILURE, 0, "gelf_update_ehdr(): %s", elf_errmsg(elf_errno(= ))); =20 - /* elf_getphdrnum(elf, &phnum); for(i=3D0; i PT_NULL\n\n"); - phdr.p_type =3D PT_NULL; + //Take and Pp flags and conver them to - + if((*pax_flags & PF_PAGEEXEC) && (*pax_flags & PF_NOPAGEEXEC)) + { + *pax_flags ^=3D PF_PAGEEXEC; + *pax_flags ^=3D PF_NOPAGEEXEC; + } + + if((*pax_flags & PF_SEGMEXEC) && (*pax_flags & PF_NOSEGMEXEC)) + { + *pax_flags ^=3D PF_SEGMEXEC; + *pax_flags ^=3D PF_NOSEGMEXEC; + } + + if((*pax_flags & PF_MPROTECT) && (*pax_flags & PF_NOMPROTECT)) + { + *pax_flags ^=3D PF_MPROTECT; + *pax_flags ^=3D PF_NOMPROTECT; + } + + if((*pax_flags & PF_EMUTRAMP) && (*pax_flags & PF_NOEMUTRAMP)) + { + *pax_flags ^=3D PF_EMUTRAMP; + *pax_flags ^=3D PF_NOEMUTRAMP; + } + + if((*pax_flags & PF_RANDMMAP) && (*pax_flags & PF_NORANDMMAP)) + { + *pax_flags ^=3D PF_RANDMMAP; + *pax_flags ^=3D PF_NORANDMMAP; + } + + if((*pax_flags & PF_RANDEXEC) && (*pax_flags & PF_NORANDEXEC)) + { + *pax_flags ^=3D PF_RANDEXEC; + *pax_flags ^=3D PF_NORANDEXEC; + } + + phdr.p_flags =3D *pax_flags ; + if(!gelf_update_phdr(elf, i, &phdr)) error(EXIT_FAILURE, 0, "gelf_update_phdr(): %s", elf_errmsg(elf_errn= o())); } } - */ } =20 =20