From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 04E931381F3 for ; Thu, 13 Dec 2012 20:37:36 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 713AA21C086; Thu, 13 Dec 2012 20:37:28 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id C707221C086 for ; Thu, 13 Dec 2012 20:37:27 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 8867E33DB37 for ; Thu, 13 Dec 2012 20:37:26 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 22A95E543C for ; Thu, 13 Dec 2012 20:37:25 +0000 (UTC) From: "Anthony G. Basile" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Anthony G. Basile" Message-ID: <1355430898.f54c4dc0be5c0a0572250db2b73a4e809e74e8d1.blueness@gentoo> Subject: [gentoo-commits] proj/elfix:master commit in: scripts/, / X-VCS-Repository: proj/elfix X-VCS-Files: TODO scripts/paxmodule.c X-VCS-Directories: scripts/ / X-VCS-Committer: blueness X-VCS-Committer-Name: Anthony G. Basile X-VCS-Revision: f54c4dc0be5c0a0572250db2b73a4e809e74e8d1 X-VCS-Branch: master Date: Thu, 13 Dec 2012 20:37:25 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: c45a3f90-95cd-4a24-8145-99f797ed0df6 X-Archives-Hash: d24870eaf438265ec29617fd4da983f4 commit: f54c4dc0be5c0a0572250db2b73a4e809e74e8d1 Author: Anthony G. Basile gentoo org> AuthorDate: Thu Dec 13 20:34:58 2012 +0000 Commit: Anthony G. Basile gentoo org> CommitDate: Thu Dec 13 20:34:58 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=f54c4dc0 scripts/paxmodule.c: do not use '-' when setting null XATTR PAX flags This repeats the fix for src/paxctl-ng.c but for scripts/paxmodule.c. TODO: There is a lot of shared code between the two and a convenience library should be to minimize the repeated code. X-Gentoo-Bug: 446518 X-Gentoo-Bug-URL: https://bugs.gentoo.org/446518 --- TODO | 2 +- scripts/paxmodule.c | 107 +++++++++++++++++++++++++++++++++++---------------- 2 files changed, 75 insertions(+), 34 deletions(-) diff --git a/TODO b/TODO index 83b1012..a58192d 100644 --- a/TODO +++ b/TODO @@ -1,3 +1,3 @@ * src/paxctl-ng.c: add verbose error reporting for xattr (like for set/get phdr) - + * src/paxctl-ng.c, scripts/paxmodule.c: reduce the shared code to a convenience library diff --git a/scripts/paxmodule.c b/scripts/paxmodule.c index 8ae10be..422d193 100644 --- a/scripts/paxmodule.c +++ b/scripts/paxmodule.c @@ -162,32 +162,36 @@ get_pt_flags(int fd) uint16_t string2bin(char *buf) { + int i; uint16_t flags = 0; - if( buf[0] == 'P' ) - flags |= PF_PAGEEXEC; - else if( buf[0] == 'p' ) - flags |= PF_NOPAGEEXEC; - - if( buf[1] == 'S' ) - flags |= PF_SEGMEXEC; - else if( buf[1] == 's' ) - flags |= PF_NOSEGMEXEC; - - if( buf[2] == 'M' ) - flags |= PF_MPROTECT; - else if( buf[2] == 'm' ) - flags |= PF_NOMPROTECT; - - if( buf[3] == 'E' ) - flags |= PF_EMUTRAMP; - else if( buf[3] == 'e' ) - flags |= PF_NOEMUTRAMP; - - if( buf[4] == 'R' ) - flags |= PF_RANDMMAP; - else if( buf[4] == 'r' ) - flags |= PF_NORANDMMAP; + for(i = 0; i < 5; i++) + { + if(buf[i] == 'P') + flags |= PF_PAGEEXEC; + else if(buf[i] == 'p') + flags |= PF_NOPAGEEXEC; + + if(buf[i] == 'E') + flags |= PF_EMUTRAMP; + else if(buf[i] == 'e') + flags |= PF_NOEMUTRAMP; + + if(buf[i] == 'M') + flags |= PF_MPROTECT; + else if(buf[i] == 'm') + flags |= PF_NOMPROTECT; + + if(buf[i] == 'R') + flags |= PF_RANDMMAP; + else if(buf[i] == 'r') + flags |= PF_NORANDMMAP; + + if(buf[i] == 'S') + flags |= PF_SEGMEXEC; + else if(buf[i] == 's') + flags |= PF_NOSEGMEXEC; + } return flags; } @@ -211,22 +215,59 @@ get_xt_flags(int fd) void -bin2string(uint16_t flags, char *buf) +bin2string4print(uint16_t flags, char *buf) { buf[0] = flags & PF_PAGEEXEC ? 'P' : flags & PF_NOPAGEEXEC ? 'p' : '-' ; - buf[1] = flags & PF_SEGMEXEC ? 'S' : - flags & PF_NOSEGMEXEC ? 's' : '-'; + buf[1] = flags & PF_EMUTRAMP ? 'E' : + flags & PF_NOEMUTRAMP ? 'e' : '-'; buf[2] = flags & PF_MPROTECT ? 'M' : flags & PF_NOMPROTECT ? 'm' : '-'; - buf[3] = flags & PF_EMUTRAMP ? 'E' : - flags & PF_NOEMUTRAMP ? 'e' : '-'; - - buf[4] = flags & PF_RANDMMAP ? 'R' : + buf[3] = flags & PF_RANDMMAP ? 'R' : flags & PF_NORANDMMAP ? 'r' : '-'; + + buf[4] = flags & PF_SEGMEXEC ? 'S' : + flags & PF_NOSEGMEXEC ? 's' : '-'; +} + + +void +bin2string(uint16_t flags, char *buf) +{ + int i; + + for(i = 0; i < 5; i++) + buf[i] = 0; + + i = 0; + + if(flags & PF_PAGEEXEC) + buf[i++] = 'P'; + else if(flags & PF_NOPAGEEXEC) + buf[i++] = 'p'; + + if(flags & PF_EMUTRAMP) + buf[i++] = 'E'; + else if(flags & PF_NOEMUTRAMP) + buf[i++] = 'e'; + + if(flags & PF_MPROTECT) + buf[i++] = 'M'; + else if(flags & PF_NOMPROTECT) + buf[i++] = 'm'; + + if(flags & PF_RANDMMAP) + buf[i++] = 'R'; + if(flags & PF_NORANDMMAP) + buf[i++] = 'r'; + + if(flags & PF_SEGMEXEC) + buf[i++] = 'S'; + else if(flags & PF_NOSEGMEXEC) + buf[i++] = 's'; } @@ -266,7 +307,7 @@ pax_getflags(PyObject *self, PyObject *args) if( flags != UINT16_MAX ) { memset(buf, 0, FLAGS_SIZE); - bin2string(flags, buf); + bin2string4print(flags, buf); } #endif @@ -275,7 +316,7 @@ pax_getflags(PyObject *self, PyObject *args) if( flags != UINT16_MAX ) { memset(buf, 0, FLAGS_SIZE); - bin2string(flags, buf); + bin2string4print(flags, buf); } #endif