public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/elfix:elfix-0.7.x commit in: scripts/
@ 2012-12-24 10:59 Anthony G. Basile
  0 siblings, 0 replies; 10+ messages in thread
From: Anthony G. Basile @ 2012-12-24 10:59 UTC (permalink / raw
  To: gentoo-commits

commit:     fb6bcb1d775bf6c67ebf31abaf127bb5258300ff
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 22 01:04:30 2012 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Dec 24 10:57:56 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=fb6bcb1d

scripts/Makefile.am: install pypaxctl

---
 scripts/Makefile.am |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 9f36bdd..6728a83 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -1,4 +1,4 @@
 ACLOCAL_AMFLAGS = -I m4
 
-dist_sbin_SCRIPTS = migrate-pax revdep-pax
-EXTRA_DIST = paxmodule.c setup.py pypaxctl
+dist_sbin_SCRIPTS = pypaxctl migrate-pax revdep-pax
+EXTRA_DIST = paxmodule.c setup.py


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/elfix:elfix-0.7.x commit in: scripts/
@ 2012-12-24 10:59 Anthony G. Basile
  0 siblings, 0 replies; 10+ messages in thread
From: Anthony G. Basile @ 2012-12-24 10:59 UTC (permalink / raw
  To: gentoo-commits

commit:     162448531916e2c8ed68f0c67b74d3a9ad097fcb
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 22 18:31:37 2012 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Dec 24 10:57:57 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=16244853

scripts/{paxmodule.c,pypaxctl}: add delete XATTR_PAX field

---
 scripts/paxmodule.c |   50 +++++++++++++++++++++++++++++++-------
 scripts/pypaxctl    |   66 +++++++++++++++++++++++++++++++-------------------
 2 files changed, 82 insertions(+), 34 deletions(-)

diff --git a/scripts/paxmodule.c b/scripts/paxmodule.c
index 1001279..9d7e4e0 100644
--- a/scripts/paxmodule.c
+++ b/scripts/paxmodule.c
@@ -55,25 +55,31 @@
 static PyObject * pax_getflags(PyObject *, PyObject *);
 static PyObject * pax_setbinflags(PyObject *, PyObject *);
 static PyObject * pax_setstrflags(PyObject *, PyObject *);
+#ifdef XTPAX
+static PyObject * pax_deleteflags(PyObject *, PyObject *);
+#endif
 
 static PyMethodDef PaxMethods[] = {
-	{"getflags",  pax_getflags, METH_VARARGS, "Get the pax flags as a string."},
+	{"getflags",     pax_getflags,    METH_VARARGS, "Get the pax flags as a string."},
 	{"setbinflags",  pax_setbinflags, METH_VARARGS, "Set the pax flags using binary."},
 	{"setstrflags",  pax_setstrflags, METH_VARARGS, "Set the pax flags using string."},
+#ifdef XTPAX
+	{"deleteflags",  pax_deleteflags, METH_VARARGS, "Delete the XATTR_PAX field."},
+#endif
 	{NULL, NULL, 0, NULL}
 };
 
 #if PY_MAJOR_VERSION >= 3
     static struct PyModuleDef moduledef = {
         PyModuleDef_HEAD_INIT,
-        "pax",							/* m_name */
-        "Module for get/setting PT_PAX and XATTR_PAX flags",	/* m_doc */
-        -1,							/* m_size */
-        PaxMethods,						/* m_methods */
-        NULL,							/* m_reload */
-        NULL,							/* m_traverse */
-        NULL,							/* m_clear */
-        NULL,							/* m_free */
+        "pax",								/* m_name */
+        "Module for get/set/deleting PT_PAX and XATTR_PAX flags",	/* m_doc */
+        -1,								/* m_size */
+        PaxMethods,							/* m_methods */
+        NULL,								/* m_reload */
+        NULL,								/* m_traverse */
+        NULL,								/* m_clear */
+        NULL,								/* m_free */
     };
 #endif
 
@@ -637,3 +643,29 @@ pax_setstrflags(PyObject *self, PyObject *args)
 
 	return Py_BuildValue("");
 }
+
+
+#ifdef XTPAX
+static PyObject *
+pax_deleteflags(PyObject *self, PyObject *args)
+{
+	const char *f_name;
+
+	if(!PyArg_ParseTuple(args, "s", &f_names))
+	{
+		PyErr_SetString(PaxError, "pax_deleteflags: PyArg_ParseTuple failed");
+		return NULL;
+	}
+
+	if((fd = open(f_name, O_RDONLY)) < 0)
+	{
+		PyErr_SetString(PaxError, "pax_deleteflags: open() failed");
+		return NULL;
+	}
+
+	if( !fremovexattr(fd, PAX_NAMESPACE) )
+		return Py_BuildValue("");
+	else
+		return NULL;
+}
+#endif

diff --git a/scripts/pypaxctl b/scripts/pypaxctl
index 8edf61e..6734e36 100755
--- a/scripts/pypaxctl
+++ b/scripts/pypaxctl
@@ -22,44 +22,60 @@ import sys
 import getopt
 import pax
 
+def run_usage():
+	print('Package Name : elfix')
+	print('Bug Reports  : http://bugs.gentoo.org/')
+	print('Program Name : pypaxctl')
+	print('Description  : Get/set/delete PT_PAX or XATTR_PAX flags on an ELF object')
+	print('')
+	print('Usage        : pypaxctl -g ELF                get XATTR_PAX flags first, else get PT_PAX flags')
+	print('             : pypaxctl -s [-PpEeMmRrSs] ELF  set PT_PAX and XATTR_PAX flags whenever possible')
+	print('             : pypaxctl -d ELF                delete the XATTR_PAX field')
+	print('')
+	print('Note         : If the pax.so module is compiled without PT_PAX or XATTR_PAX, then no operation will')
+	print('             : be done on that field.  Note -d is not available unless XATTR_PAX support is present')
+	print('')
+
+
 def main():
 	try:
-		opts, args = getopt.getopt(sys.argv[1:], 's:g')
+		opts, args = getopt.getopt(sys.argv[1:], 'gs:d')
 	except getopt.GetoptError as err:
 		print(err)
 		sys.exit(1)
 
-	if len(opts) == 0:
-		print('Provide either -s <flags> <elf> xor -g <elf>')
+	if( len(opts) != 1 or len(args) < 1 ):
+		run_usage()
 		sys.exit(1)
 
-	binary = None
-
-	do_set = 0
-	do_get = 0
+	elf = None
+	do_get = False
+	do_set = False
+	do_del = False
 
 	for o, a in opts:
-		if o == '-s':
+		if o == '-g':
+			do_get = True
+		elif o == '-s':
 			flags = a
-			do_set = 1
-		elif o == '-g':
-			do_get = 1
-
-	if( (do_set + do_get) != 1 ):
-		print('Provide either -s <flags> <elf> xor -g <elf>')
-		sys.exit(1)
+			do_set = True
+		else:
+			do_del = True
 
-	if( len(args) < 1 ):
-		print('Provide either -s <flags> <elf> xor -g <elf>')
-		sys.exit(1)
-
-	if( do_set == 1 ):
-		for binary in args:
-			pax.setstrflags(binary, flags)
-	else:
-		for binary in args:
-			( str_flags, bin_flags ) = pax.getflags(binary)
+	if( do_get ):
+		for elf in args:
+			( str_flags, bin_flags ) = pax.getflags(elf)
 			print('%s' % str_flags)
+	elif( do_set ):
+		for elf in args:
+			pax.setstrflags(elf, flags)
+	else:
+		for elf in args:
+			try:
+				pax.deleteflags(elf)
+			except pax.error:
+				print('pax_deleteflags: XATTR_PAX not supported')
+				sys.exit(1)
 
 if __name__ == '__main__':
 	main()


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/elfix:elfix-0.7.x commit in: scripts/
@ 2012-12-24 10:59 Anthony G. Basile
  0 siblings, 0 replies; 10+ messages in thread
From: Anthony G. Basile @ 2012-12-24 10:59 UTC (permalink / raw
  To: gentoo-commits

commit:     1980444b6f28a408ae0cd11711633df5f47210a3
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 22 16:36:30 2012 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Dec 24 10:57:57 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=1980444b

scripts/migrate-pax: rename functions in line with misc/alt-revdep-pax

---
 scripts/migrate-pax |   17 +++++++++--------
 1 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/scripts/migrate-pax b/scripts/migrate-pax
index 994d4f7..5e46292 100755
--- a/scripts/migrate-pax
+++ b/scripts/migrate-pax
@@ -15,10 +15,11 @@ import getopt
 import sys
 import pax
 
-def get_forward_linkings():
+def get_object_needed():
+
 	var_db_pkg = '/var/db/pkg'
 
-	forward_linkings = {}
+	object_needed = {}
 	for cat in os.listdir(var_db_pkg):
 		catdir = '%s/%s' % (var_db_pkg, cat)
 		for pkg in os.listdir(catdir):
@@ -32,11 +33,11 @@ def get_forward_linkings():
 					link = re.split(';', line)
 					elf = link[1]
 					sonames = re.split(',', link[4])
-					forward_linkings[elf] = sonames
+					object_needed[elf] = sonames
 			except IOError:
 				continue #File probably doesn't exist, which is okay
 
-	return forward_linkings
+	return object_needed
 
 
 def run_usage():
@@ -91,14 +92,13 @@ def main():
 		print('RUN AS ROOT: cannot migrate flags')
 		sys.exit(0)
 
-	forward_linkings = get_forward_linkings()
+	object_needed = get_object_needed()
 
 	fail = []
 	none = []
 
-	for elf in forward_linkings:
+	for elf in object_needed:
 		try:
-			flags = pax.getflags(elf)[0]
 			if flags:
 				if verbose:
 					print("%s %s" % (flags, elf))
@@ -107,6 +107,7 @@ def main():
 				if verbose:
 					print("NONE: %s" % elf)
 			if do_migration:
+				flags = pax.getflags(elf)[0]
 				flags = re.sub('-','',flags)
 				pax.setstrflags(elf, flags)
 
@@ -120,7 +121,7 @@ def main():
 			if uid == 0:
 				fail.append(elf)
 				if verbose:
-					print("BUSY: %s" % elf)
+					print("FAIL: %s" % elf)
 
 	if verbose:
 		if fail:


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/elfix:elfix-0.7.x commit in: scripts/
@ 2012-12-24 10:59 Anthony G. Basile
  0 siblings, 0 replies; 10+ messages in thread
From: Anthony G. Basile @ 2012-12-24 10:59 UTC (permalink / raw
  To: gentoo-commits

commit:     ece0cb826336726c840728941b70f11b11478019
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 22 19:29:39 2012 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Dec 24 10:57:57 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=ece0cb82

scripts/{paxmodule.c,pypaxctl}: rename deleteflags -> deletextpax

---
 scripts/paxmodule.c |   12 ++++++------
 scripts/pypaxctl    |    6 +++---
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/scripts/paxmodule.c b/scripts/paxmodule.c
index 3e335b4..14a7dcc 100644
--- a/scripts/paxmodule.c
+++ b/scripts/paxmodule.c
@@ -56,7 +56,7 @@ static PyObject * pax_getflags(PyObject *, PyObject *);
 static PyObject * pax_setbinflags(PyObject *, PyObject *);
 static PyObject * pax_setstrflags(PyObject *, PyObject *);
 #ifdef XTPAX
-static PyObject * pax_deleteflags(PyObject *, PyObject *);
+static PyObject * pax_deletextpax(PyObject *, PyObject *);
 #endif
 
 static PyMethodDef PaxMethods[] = {
@@ -64,7 +64,7 @@ static PyMethodDef PaxMethods[] = {
 	{"setbinflags",  pax_setbinflags, METH_VARARGS, "Set the pax flags using binary."},
 	{"setstrflags",  pax_setstrflags, METH_VARARGS, "Set the pax flags using string."},
 #ifdef XTPAX
-	{"deleteflags",  pax_deleteflags, METH_VARARGS, "Delete the XATTR_PAX field."},
+	{"deletextpax",  pax_deletextpax, METH_VARARGS, "Delete the XATTR_PAX field."},
 #endif
 	{NULL, NULL, 0, NULL}
 };
@@ -647,20 +647,20 @@ pax_setstrflags(PyObject *self, PyObject *args)
 
 #ifdef XTPAX
 static PyObject *
-pax_deleteflags(PyObject *self, PyObject *args)
+pax_deletextpax(PyObject *self, PyObject *args)
 {
 	const char *f_name;
 	int fd;
 
 	if(!PyArg_ParseTuple(args, "s", &f_name))
 	{
-		PyErr_SetString(PaxError, "pax_deleteflags: PyArg_ParseTuple failed");
+		PyErr_SetString(PaxError, "pax_deletextpax: PyArg_ParseTuple failed");
 		return NULL;
 	}
 
 	if((fd = open(f_name, O_RDONLY)) < 0)
 	{
-		PyErr_SetString(PaxError, "pax_deleteflags: open() failed");
+		PyErr_SetString(PaxError, "pax_deletextpax: open() failed");
 		return NULL;
 	}
 
@@ -668,7 +668,7 @@ pax_deleteflags(PyObject *self, PyObject *args)
 		return Py_BuildValue("");
 	else
 	{
-		PyErr_SetString(PaxError, "pax_deleteflags: fremovexattr() failed");
+		PyErr_SetString(PaxError, "pax_deletextpax: fremovexattr() failed");
 		return NULL;
 	}
 }

diff --git a/scripts/pypaxctl b/scripts/pypaxctl
index 809d074..8cba7a7 100755
--- a/scripts/pypaxctl
+++ b/scripts/pypaxctl
@@ -24,7 +24,7 @@ import pax
 
 xattr_available = True
 try:
-	from pax import deleteflags
+	from pax import deletextpax
 except ImportError:
 	xattr_available = False
 
@@ -76,9 +76,9 @@ def main():
 		else:
 			for elf in args:
 				try:
-					pax.deleteflags(elf)
+					pax.deletextpax(elf)
 				except pax.error:
-					print('pax_deleteflags: XATTR_PAX not supported')
+					print('pax_deletextpax: XATTR_PAX not supported')
 					sys.exit(1)
 
 if __name__ == '__main__':


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/elfix:elfix-0.7.x commit in: scripts/
@ 2012-12-24 10:59 Anthony G. Basile
  0 siblings, 0 replies; 10+ messages in thread
From: Anthony G. Basile @ 2012-12-24 10:59 UTC (permalink / raw
  To: gentoo-commits

commit:     6754ad01706641315d2319dc4349de7fb49eb109
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 23 01:04:04 2012 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Dec 24 10:57:57 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=6754ad01

scripts/paxmodule.c: throw a PaxError when pax_getflags or set_xt_flags

---
 scripts/paxmodule.c |   17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/scripts/paxmodule.c b/scripts/paxmodule.c
index 469e0cb..f77dabb 100644
--- a/scripts/paxmodule.c
+++ b/scripts/paxmodule.c
@@ -328,7 +328,13 @@ pax_getflags(PyObject *self, PyObject *args)
 
 	close(fd);
 
-	return Py_BuildValue("si", buf, flags);
+	if( flags == UINT16_MAX )
+	{
+		PyErr_SetString(PaxError, "pax_getflags: no PAX flags found");
+		return NULL;
+	}
+	else
+		return Py_BuildValue("si", buf, flags);
 }
 
 
@@ -488,7 +494,14 @@ set_xt_flags(int fd, uint16_t xt_flags)
 
 	memset(buf, 0, FLAGS_SIZE);
 	bin2string(xt_flags, buf);
-	fsetxattr(fd, PAX_NAMESPACE, buf, strlen(buf), 0);
+
+	if( fsetxattr(fd, PAX_NAMESPACE, buf, strlen(buf), 0))
+	{
+		PyErr_SetString(PaxError, "pax_deletextpax: fremovexattr() failed");
+		return;
+	}
+	else
+		return;
 }
 #endif
 


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/elfix:elfix-0.7.x commit in: scripts/
@ 2012-12-24 10:59 Anthony G. Basile
  0 siblings, 0 replies; 10+ messages in thread
From: Anthony G. Basile @ 2012-12-24 10:59 UTC (permalink / raw
  To: gentoo-commits

commit:     78e5ceac20454d19d92ca65cfdaf5883d437e410
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 22 19:02:46 2012 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Dec 24 10:57:57 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=78e5ceac

scripts/pypaxctl: make aware if XATTR_PAX support is available in pax.so

---
 scripts/paxmodule.c |    6 +++-
 scripts/pypaxctl    |   70 +++++++++++++++++++++++++++------------------------
 2 files changed, 42 insertions(+), 34 deletions(-)

diff --git a/scripts/paxmodule.c b/scripts/paxmodule.c
index 9d7e4e0..3e335b4 100644
--- a/scripts/paxmodule.c
+++ b/scripts/paxmodule.c
@@ -650,8 +650,9 @@ static PyObject *
 pax_deleteflags(PyObject *self, PyObject *args)
 {
 	const char *f_name;
+	int fd;
 
-	if(!PyArg_ParseTuple(args, "s", &f_names))
+	if(!PyArg_ParseTuple(args, "s", &f_name))
 	{
 		PyErr_SetString(PaxError, "pax_deleteflags: PyArg_ParseTuple failed");
 		return NULL;
@@ -666,6 +667,9 @@ pax_deleteflags(PyObject *self, PyObject *args)
 	if( !fremovexattr(fd, PAX_NAMESPACE) )
 		return Py_BuildValue("");
 	else
+	{
+		PyErr_SetString(PaxError, "pax_deleteflags: fremovexattr() failed");
 		return NULL;
+	}
 }
 #endif

diff --git a/scripts/pypaxctl b/scripts/pypaxctl
index 6734e36..809d074 100755
--- a/scripts/pypaxctl
+++ b/scripts/pypaxctl
@@ -22,24 +22,38 @@ import sys
 import getopt
 import pax
 
+xattr_available = True
+try:
+	from pax import deleteflags
+except ImportError:
+	xattr_available = False
+
 def run_usage():
 	print('Package Name : elfix')
 	print('Bug Reports  : http://bugs.gentoo.org/')
 	print('Program Name : pypaxctl')
-	print('Description  : Get/set/delete PT_PAX or XATTR_PAX flags on an ELF object')
-	print('')
-	print('Usage        : pypaxctl -g ELF                get XATTR_PAX flags first, else get PT_PAX flags')
-	print('             : pypaxctl -s [-PpEeMmRrSs] ELF  set PT_PAX and XATTR_PAX flags whenever possible')
-	print('             : pypaxctl -d ELF                delete the XATTR_PAX field')
-	print('')
-	print('Note         : If the pax.so module is compiled without PT_PAX or XATTR_PAX, then no operation will')
-	print('             : be done on that field.  Note -d is not available unless XATTR_PAX support is present')
+	if xattr_available:
+		print('Description  : Get/set/delete PT_PAX or XATTR_PAX flags on an ELF object')
+		print('')
+		print('Usage        : pypaxctl -g ELF                get XATTR_PAX flags first, else get PT_PAX flags')
+		print('             : pypaxctl -s [-PpEeMmRrSs] ELF  set PT_PAX and XATTR_PAX flags whenever possible')
+		print('             : pypaxctl -d ELF                delete the XATTR_PAX field')
+	else:
+		print('Description  : Get/set PT_PAX flags on an ELF object')
+		print('')
+		print('Usage        : pypaxctl -g ELF                get PT_PAX flags')
+		print('             : pypaxctl -s [-PpEeMmRrSs] ELF  set PT_PAX flags whenever possible')
+		print('')
+		print('Note         : Python module pax.so was compiled without XATTR_PAX support')
 	print('')
 
 
 def main():
 	try:
-		opts, args = getopt.getopt(sys.argv[1:], 'gs:d')
+		if xattr_available:
+			opts, args = getopt.getopt(sys.argv[1:], 'gs:d')
+		else:
+			opts, args = getopt.getopt(sys.argv[1:], 'gs:')
 	except getopt.GetoptError as err:
 		print(err)
 		sys.exit(1)
@@ -48,34 +62,24 @@ def main():
 		run_usage()
 		sys.exit(1)
 
-	elf = None
-	do_get = False
-	do_set = False
-	do_del = False
-
 	for o, a in opts:
 		if o == '-g':
-			do_get = True
+			for elf in args:
+				( str_flags, bin_flags ) = pax.getflags(elf)
+				print('%s' % str_flags)
 		elif o == '-s':
-			flags = a
-			do_set = True
-		else:
-			do_del = True
+			for elf in args:
+				pax.setstrflags(elf, a)
 
-	if( do_get ):
-		for elf in args:
-			( str_flags, bin_flags ) = pax.getflags(elf)
-			print('%s' % str_flags)
-	elif( do_set ):
-		for elf in args:
-			pax.setstrflags(elf, flags)
-	else:
-		for elf in args:
-			try:
-				pax.deleteflags(elf)
-			except pax.error:
-				print('pax_deleteflags: XATTR_PAX not supported')
-				sys.exit(1)
+		# Don't worry if xattr_available = False
+		# because we can't get here if it is.
+		else:
+			for elf in args:
+				try:
+					pax.deleteflags(elf)
+				except pax.error:
+					print('pax_deleteflags: XATTR_PAX not supported')
+					sys.exit(1)
 
 if __name__ == '__main__':
 	main()


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/elfix:elfix-0.7.x commit in: scripts/
@ 2012-12-24 10:59 Anthony G. Basile
  0 siblings, 0 replies; 10+ messages in thread
From: Anthony G. Basile @ 2012-12-24 10:59 UTC (permalink / raw
  To: gentoo-commits

commit:     bc5e7d580a131fee1dd1c5ddd602b6ce6f53246a
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 22 19:42:51 2012 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Dec 24 10:57:57 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=bc5e7d58

scripts/paxmodule.c: rename pax.error -> pax.PaxError

---
 scripts/migrate-pax |    2 +-
 scripts/paxmodule.c |    4 ++--
 scripts/pypaxctl    |    2 +-
 scripts/revdep-pax  |   16 ++++++++--------
 4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/scripts/migrate-pax b/scripts/migrate-pax
index 5e46292..e30c306 100755
--- a/scripts/migrate-pax
+++ b/scripts/migrate-pax
@@ -117,7 +117,7 @@ def main():
 		# you can always set the pax flags with pax.so
 		# even on a busy text file because it will skip
 		# setting PT_PAX and only set the XATTR_PAX
-		except pax.error:
+		except pax.PaxError:
 			if uid == 0:
 				fail.append(elf)
 				if verbose:

diff --git a/scripts/paxmodule.c b/scripts/paxmodule.c
index 14a7dcc..26d00ce 100644
--- a/scripts/paxmodule.c
+++ b/scripts/paxmodule.c
@@ -103,9 +103,9 @@ initpax(void)
 	if (m == NULL)
 		return;
 
-	PaxError = PyErr_NewException("pax.error", NULL, NULL);
+	PaxError = PyErr_NewException("pax.PaxError", NULL, NULL);
 	Py_INCREF(PaxError);
-	PyModule_AddObject(m, "error", PaxError);
+	PyModule_AddObject(m, "PaxError", PaxError);
 
 #if PY_MAJOR_VERSION >= 3
 	return m;

diff --git a/scripts/pypaxctl b/scripts/pypaxctl
index 8cba7a7..0e8f3fe 100755
--- a/scripts/pypaxctl
+++ b/scripts/pypaxctl
@@ -77,7 +77,7 @@ def main():
 			for elf in args:
 				try:
 					pax.deletextpax(elf)
-				except pax.error:
+				except pax.PaxError:
 					print('pax_deletextpax: XATTR_PAX not supported')
 					sys.exit(1)
 

diff --git a/scripts/revdep-pax b/scripts/revdep-pax
index 3ac5d2d..4bb3f36 100755
--- a/scripts/revdep-pax
+++ b/scripts/revdep-pax
@@ -103,7 +103,7 @@ def print_forward_linkings( forward_linkings, so2library_mappings, verbose ):
 			( binary_str_flags, binary_bin_flags ) = pax.getflags(binary)
 			sv = '%s ( %s )\n' % ( binary, binary_str_flags )
 			s = sv
-		except pax.error:
+		except pax.PaxError:
 			missing_binaries.append(binary)
 			continue
 
@@ -116,7 +116,7 @@ def print_forward_linkings( forward_linkings, so2library_mappings, verbose ):
 				if binary_str_flags != library_str_flags:
 					s = '%s\n\t%s\t%s ( %s )' % ( s, soname, library, library_str_flags )
 					count = count + 1
-			except pax.error:
+			except pax.PaxError:
 				missing_links.append(soname)
 
 		if verbose:
@@ -151,7 +151,7 @@ def print_reverse_linkings( reverse_linkings, so2library_mappings, verbose, exec
 			( library_str_flags, library_bin_flags ) = pax.getflags(library)
 			sv = '%s\t%s ( %s )\n' % ( soname, library, library_str_flags )
 			s = sv
-		except pax.error:
+		except pax.PaxError:
 			missing_sonames.append(soname)
 			continue
 
@@ -170,7 +170,7 @@ def print_reverse_linkings( reverse_linkings, so2library_mappings, verbose, exec
 					if library_str_flags != binary_str_flags:
 						s = '%s\n\t%s ( %s )' % ( s, binary, binary_str_flags )
 						count = count + 1
-			except pax.error:
+			except pax.PaxError:
 				missing_links.append(binary)
 
 		if verbose:
@@ -275,7 +275,7 @@ def run_binary(binary, verbose, mark, allyes):
 				mismatched_libraries.append(library)
 				if not verbose:
 					print('\t%s\t%s ( %s )' % ( soname, library, library_str_flags ))
-		except pax.error:
+		except pax.PaxError:
 			print('file for soname %s not found' % soname)
 
 	if len(mismatched_libraries) == 0:
@@ -304,7 +304,7 @@ def run_binary(binary, verbose, mark, allyes):
 				if do_marking:
 					try:
 						migrate_flags(library, binary_str_flags, binary_bin_flags)
-					except pax.error:
+					except pax.PaxError:
 						print("\n\tCould not set pax flags on %s, file is probably busy" % library)
 						print("\tShut down all processes that use it and try again")
 					( library_str_flags, library_bin_flags ) = pax.getflags(library)
@@ -365,7 +365,7 @@ def run_soname(name, verbose, use_soname, mark, allyes, executable_only):
 					mismatched_binaries.append(binary)
 					if not verbose:
 						print('\t%s ( %s )' % ( binary, binary_str_flags ))
-		except pax.error:
+		except pax.PaxError:
 			print('cannot obtain pax flags for %s' % binary)
 
 	if len(mismatched_binaries) == 0:
@@ -396,7 +396,7 @@ def run_soname(name, verbose, use_soname, mark, allyes, executable_only):
 				if do_marking:
 					try:
 						migrate_flags(binary, library_str_flags, library_bin_flags)
-					except pax.error:
+					except pax.PaxError:
 						print('\n\tCould not set pax flags on %s, file is probably busy' % binary)
 						print('\tShut down all processes that use it and try again')
 					( binary_str_flags, binary_bin_flags ) = pax.getflags(binary)


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/elfix:elfix-0.7.x commit in: scripts/
@ 2012-12-24 10:59 Anthony G. Basile
  0 siblings, 0 replies; 10+ messages in thread
From: Anthony G. Basile @ 2012-12-24 10:59 UTC (permalink / raw
  To: gentoo-commits

commit:     35bde12e46a81ab43458fe088544d58cb3e8c65a
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 22 20:17:47 2012 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Dec 24 10:57:57 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=35bde12e

scripts/migrate-pax: add delete XATTR_PAX on all system ELF objects

---
 scripts/migrate-pax |   31 ++++++++++++++++++++++++++-----
 1 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/scripts/migrate-pax b/scripts/migrate-pax
index e30c306..d5bc03a 100755
--- a/scripts/migrate-pax
+++ b/scripts/migrate-pax
@@ -48,6 +48,7 @@ def run_usage():
 	print('')
 	print('Usage        : migrate -v        print out all system ELF objects')
 	print('             : migrate -m [-v]   migrate flags on all system ELF objects')
+	print('             : migrate -d [-v]   delete XATTR_PAX on all system ELF objects')
 	print('             : migrate [-h]      print out this help')
 	print('             : -v                be verbose when migrating')
 	print('')
@@ -55,15 +56,15 @@ def run_usage():
 
 def main():
 	try:
-		opts, args = getopt.getopt(sys.argv[1:], 'mv')
+		opts, args = getopt.getopt(sys.argv[1:], 'vmdh')
 	except getopt.GetoptError as err:
 		print(str(err)) # will print something like 'option -a not recognized'
 		run_usage()
 		sys.exit(1)
 
-
 	verbose = False
 	do_migration = False
+	do_deleteall = False
 	do_usage = False
 
 	opt_count = 0
@@ -75,6 +76,9 @@ def main():
 		elif o == '-m':
 			do_migration = True
 			opt_count += 1
+		elif o == '-d':
+			do_deleteall = True
+			opt_cout += 1
 		elif o == '-h':
 			do_usage = True
 			opt_count += 1
@@ -83,14 +87,27 @@ def main():
 			print('Please file a bug')
 			sys.exit(1)
 
-	if opt_count == 0 or do_usage:
+	if do_usage:
 		run_usage()
 		sys.exit(0)
 
+	if opt_count == 0 or opt_count > 2 or ( do_migration and do_deleteall):
+		run_usage()
+		sys.exit(1)
+
+	# Are we root?
 	uid = os.getuid()
 	if uid != 0 and do_migration:
 		print('RUN AS ROOT: cannot migrate flags')
-		sys.exit(0)
+		sys.exit(1)
+
+	# Do we have XATTR_PAX support?
+	if do_migration or do_deleteall:
+		try:
+			from pax import deletextpax
+		except ImportError:
+			print('ERROR: Python module pax.so was compiled without XATTR_PAX support, cannot migrate or delete XATTR_PAX')
+			sys.exit(1)
 
 	object_needed = get_object_needed()
 
@@ -99,6 +116,7 @@ def main():
 
 	for elf in object_needed:
 		try:
+			flags = pax.getflags(elf)[0]
 			if flags:
 				if verbose:
 					print("%s %s" % (flags, elf))
@@ -106,11 +124,14 @@ def main():
 				none.append(elf)
 				if verbose:
 					print("NONE: %s" % elf)
+
 			if do_migration:
-				flags = pax.getflags(elf)[0]
 				flags = re.sub('-','',flags)
 				pax.setstrflags(elf, flags)
 
+			if do_deleteall:
+				pax.deletextpax(elf)
+
 		# We should never get here, because you can
 		# always getflags() via pax.so since you can
 		# read PT_PAX even from a busy text file, and


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/elfix:elfix-0.7.x commit in: scripts/
@ 2012-12-24 10:59 Anthony G. Basile
  0 siblings, 0 replies; 10+ messages in thread
From: Anthony G. Basile @ 2012-12-24 10:59 UTC (permalink / raw
  To: gentoo-commits

commit:     a9fe3d796f6e8d7a37115a81d2f7b3d74a71ceb6
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 22 22:20:36 2012 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Dec 24 10:57:57 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=a9fe3d79

scripts/paxmodule.c: add important close(fd) in deletextpax()

---
 scripts/migrate-pax |    2 +-
 scripts/paxmodule.c |    4 ++++
 2 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/scripts/migrate-pax b/scripts/migrate-pax
index d5bc03a..1d5c2f7 100755
--- a/scripts/migrate-pax
+++ b/scripts/migrate-pax
@@ -78,7 +78,7 @@ def main():
 			opt_count += 1
 		elif o == '-d':
 			do_deleteall = True
-			opt_cout += 1
+			opt_count += 1
 		elif o == '-h':
 			do_usage = True
 			opt_count += 1

diff --git a/scripts/paxmodule.c b/scripts/paxmodule.c
index 26d00ce..469e0cb 100644
--- a/scripts/paxmodule.c
+++ b/scripts/paxmodule.c
@@ -665,9 +665,13 @@ pax_deletextpax(PyObject *self, PyObject *args)
 	}
 
 	if( !fremovexattr(fd, PAX_NAMESPACE) )
+	{
+		close(fd);
 		return Py_BuildValue("");
+	}
 	else
 	{
+		close(fd);
 		PyErr_SetString(PaxError, "pax_deletextpax: fremovexattr() failed");
 		return NULL;
 	}


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [gentoo-commits] proj/elfix:elfix-0.7.x commit in: scripts/
@ 2012-12-29  1:16 Anthony G. Basile
  0 siblings, 0 replies; 10+ messages in thread
From: Anthony G. Basile @ 2012-12-29  1:16 UTC (permalink / raw
  To: gentoo-commits

commit:     dc5a32daff93f11d06008d7cb4b0ac433d9bdf35
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 28 19:34:12 2012 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Sat Dec 29 01:12:28 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=dc5a32da

scripts/migrate-pax: use portage to read NEEDED.ELF.2

---
 scripts/migrate-pax |  281 ++++++++++++++++++++++++++-------------------------
 1 files changed, 143 insertions(+), 138 deletions(-)

diff --git a/scripts/migrate-pax b/scripts/migrate-pax
index 09a41e2..1460c71 100755
--- a/scripts/migrate-pax
+++ b/scripts/migrate-pax
@@ -1,160 +1,165 @@
 #!/usr/bin/env python
-
 #
-# Note: This alternative way of doing revdep-pax only
-# works on Gentoo systems where NEEDED.ELF.2 all the
-# information we need generated by scanelf during emerge.
+#    migrate-pax: this file is part of the elfix package
+#    Copyright (C) 2012  Anthony G. Basile
 #
-# See /usr/lib/portage/bin/misc-functions.sh ~line 520
-# echo "${arch:3};${obj};${soname};${rpath};${needed}" >> "${PORTAGE_BUILDDIR}"/build-info/NEEDED.ELF.2
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
 #
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+# We use portage's NEEDED.ELF.2 file.  The format is in
+# /usr/lib/portage/bin/misc-functions.sh ~line 520
+# echo "${arch:3};${obj};${soname};${rpath};${needed}" >> "${PORTAGE_BUILDDIR}"/build-info/NEEDED.ELF.2
 
 import os
 import re
 import getopt
 import sys
 import pax
+import portage
+
+def get_objects():
 
-def get_object_needed():
+    vardb = portage.db[portage.root]["vartree"].dbapi
 
-	var_db_pkg = '/var/db/pkg'
+    objects = []
 
-	object_needed = {}
-	for cat in os.listdir(var_db_pkg):
-		catdir = '%s/%s' % (var_db_pkg, cat)
-		for pkg in os.listdir(catdir):
-			pkgdir = '%s/%s' % (catdir, pkg)
-			need = '%s/%s' % (pkgdir, 'NEEDED.ELF.2')
-			try:
-				g = open(need, 'r')
-				needs = g.readlines()
-				for line in needs:
-					line = line.strip()
-					link = re.split(';', line)
-					elf = link[1]
-					sonames = re.split(',', link[4])
-					object_needed[elf] = sonames
-			except IOError:
-				continue #File probably doesn't exist, which is okay
+    for pkg in vardb.cpv_all():
+        needed = vardb.aux_get(pkg, ['NEEDED.ELF.2'])[0].strip()
+        if not needed: # Some packages have no NEEDED.ELF.2
+            continue
+        for line in re.split('\n', needed):
+            link = re.split(';', line)
+            objects.append(link[1]) # link[1] is the ELF object
 
-	return object_needed
+    return objects
 
 
 def run_usage():
-	print('Package Name : elfix')
-	print('Bug Reports  : http://bugs.gentoo.org/')
-	print('Program Name : migrate')
-	print('Description  : Migrate PT_PAX to XATTR_PAX Flags on all system ELF objects')
-	print('')
-	print('Usage        : migrate -v        print out all system ELF objects')
-	print('             : migrate -m [-v]   migrate flags on all system ELF objects')
-	print('             : migrate -d [-v]   delete XATTR_PAX on all system ELF objects')
-	print('             : migrate [-h]      print out this help')
-	print('             : -v                be verbose when migrating')
-	print('')
+    print('Package Name : elfix')
+    print('Bug Reports  : http://bugs.gentoo.org/')
+    print('Program Name : migrate')
+    print('Description  : Migrate PT_PAX to XATTR_PAX Flags on all system ELF objects')
+    print('')
+    print('Usage        : migrate -v        print out all system ELF objects')
+    print('             : migrate -m [-v]   migrate flags on all system ELF objects')
+    print('             : migrate -d [-v]   delete XATTR_PAX on all system ELF objects')
+    print('             : migrate [-h]      print out this help')
+    print('             : -v                be verbose when migrating')
+    print('')
 
 
 def main():
-	# Are we root?
-	uid = os.getuid()
-	if uid != 0:
-		print('This program must be run as root')
-		sys.exit(1)
-
-	try:
-		opts, args = getopt.getopt(sys.argv[1:], 'vmdh')
-	except getopt.GetoptError as err:
-		print(str(err)) # will print something like 'option -a not recognized'
-		run_usage()
-		sys.exit(1)
-
-	verbose = False
-	do_migration = False
-	do_deleteall = False
-	do_usage = False
-
-	opt_count = 0
-
-	for o, a in opts:
-		if o == '-v':
-			verbose = True
-			opt_count += 1
-		elif o == '-m':
-			do_migration = True
-			opt_count += 1
-		elif o == '-d':
-			do_deleteall = True
-			opt_count += 1
-		elif o == '-h':
-			do_usage = True
-			opt_count += 1
-		else:
-			print('Option included in getopt but not handled here!')
-			print('Please file a bug')
-			sys.exit(1)
-
-	if do_usage:
-		run_usage()
-		sys.exit(0)
-
-	if opt_count == 0 or opt_count > 2 or ( do_migration and do_deleteall):
-		run_usage()
-		sys.exit(1)
-
-	# Do we have XATTR_PAX support?
-	if do_migration or do_deleteall:
-		try:
-			from pax import deletextpax
-		except ImportError:
-			print('ERROR: Python module pax.so was compiled without XATTR_PAX support, cannot migrate or delete XATTR_PAX')
-			sys.exit(1)
-
-	object_needed = get_object_needed()
-
-	fail = []
-	none = []
-
-	for elf in object_needed:
-		try:
-			flags = pax.getflags(elf)[0]
-			if flags:
-				if verbose:
-					print("%s %s" % (flags, elf))
-			else:
-				none.append(elf)
-				if verbose:
-					print("NONE: %s" % elf)
-
-			if do_migration:
-				flags = re.sub('-','',flags)
-				pax.setstrflags(elf, flags)
-
-			if do_deleteall:
-				pax.deletextpax(elf)
-
-		# We should never get here, because you can
-		# always getflags() via pax.so since you can
-		# read PT_PAX even from a busy text file, and
-		# you can always set the pax flags with pax.so
-		# even on a busy text file because it will skip
-		# setting PT_PAX and only set the XATTR_PAX
-		except pax.PaxError:
-			if uid == 0:
-				fail.append(elf)
-				if verbose:
-					print("FAIL: %s" % elf)
-
-	if verbose:
-		if fail:
-			print('\n')
-			print("ELF executables for which the migration failed:")
-			for elf in fail:
-				print("\t%s" % elf)
-		if none:
-			print('\n')
-			print("ELF executables lacking PT_PAX:")
-			for elf in none:
-				print("\t%s" % elf)
+    # Are we root?
+    uid = os.getuid()
+    if uid != 0:
+        print('This program must be run as root')
+        sys.exit(1)
+
+    try:
+        opts, args = getopt.getopt(sys.argv[1:], 'vmdh')
+    except getopt.GetoptError as err:
+        print(str(err)) # will print something like 'option -a not recognized'
+        run_usage()
+        sys.exit(1)
+
+    verbose = False
+    do_migration = False
+    do_deleteall = False
+    do_usage = False
+
+    opt_count = 0
+
+    for o, a in opts:
+        if o == '-v':
+            verbose = True
+            opt_count += 1
+        elif o == '-m':
+            do_migration = True
+            opt_count += 1
+        elif o == '-d':
+            do_deleteall = True
+            opt_count += 1
+        elif o == '-h':
+            do_usage = True
+            opt_count += 1
+        else:
+            print('Option included in getopt but not handled here!')
+            print('Please file a bug')
+            sys.exit(1)
+
+    if do_usage:
+        run_usage()
+        sys.exit(0)
+
+    if opt_count == 0 or opt_count > 2 or ( do_migration and do_deleteall):
+        run_usage()
+        sys.exit(1)
+
+    # Do we have XATTR_PAX support?
+    if do_migration or do_deleteall:
+        try:
+            from pax import deletextpax
+        except ImportError:
+            print('ERROR: Python module pax.so was compiled without XATTR_PAX support, cannot migrate or delete XATTR_PAX')
+            sys.exit(1)
+
+    objects = get_objects()
+
+    fail = []
+    none = []
+
+    for elf in objects:
+        try:
+            flags = pax.getflags(elf)[0]
+            if flags:
+                if verbose:
+                    print("%s %s" % (flags, elf))
+            else:
+                none.append(elf)
+                if verbose:
+                    print("NONE: %s" % elf)
+
+            if do_migration:
+                flags = re.sub('-','',flags)
+                pax.setstrflags(elf, flags)
+
+            if do_deleteall:
+                pax.deletextpax(elf)
+
+        # We should never get here, because you can
+        # always getflags() via pax.so since you can
+        # read PT_PAX even from a busy text file, and
+        # you can always set the pax flags with pax.so
+        # even on a busy text file because it will skip
+        # setting PT_PAX and only set the XATTR_PAX
+        except pax.PaxError:
+            if uid == 0:
+                fail.append(elf)
+                if verbose:
+                    print("FAIL: %s" % elf)
+
+    if verbose:
+        if fail:
+            print('\n')
+            print("ELF executables for which the migration failed:")
+            for elf in fail:
+                print("\t%s" % elf)
+        if none:
+            print('\n')
+            print("ELF executables lacking PT_PAX:")
+            for elf in none:
+                print("\t%s" % elf)
 
 if __name__ == '__main__':
-	main()
+    main()


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2012-12-29  1:16 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-24 10:59 [gentoo-commits] proj/elfix:elfix-0.7.x commit in: scripts/ Anthony G. Basile
  -- strict thread matches above, loose matches on Subject: below --
2012-12-24 10:59 Anthony G. Basile
2012-12-24 10:59 Anthony G. Basile
2012-12-24 10:59 Anthony G. Basile
2012-12-24 10:59 Anthony G. Basile
2012-12-24 10:59 Anthony G. Basile
2012-12-24 10:59 Anthony G. Basile
2012-12-24 10:59 Anthony G. Basile
2012-12-24 10:59 Anthony G. Basile
2012-12-29  1:16 Anthony G. Basile

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox