diff options
author | Anthony G. Basile <blueness@gentoo.org> | 2012-12-22 15:17:47 -0500 |
---|---|---|
committer | Anthony G. Basile <blueness@gentoo.org> | 2012-12-22 15:17:47 -0500 |
commit | d2e3a668071b95273c8a7d7f21370a2417b1b748 (patch) | |
tree | 3debabe15844f635e9c493276f99d4fe164da460 /scripts | |
parent | scripts/paxmodule.c: rename pax.error -> pax.PaxError (diff) | |
download | elfix-d2e3a668071b95273c8a7d7f21370a2417b1b748.tar.gz elfix-d2e3a668071b95273c8a7d7f21370a2417b1b748.tar.bz2 elfix-d2e3a668071b95273c8a7d7f21370a2417b1b748.zip |
scripts/migrate-pax: add delete XATTR_PAX on all system ELF objects
Diffstat (limited to 'scripts')
-rwxr-xr-x | 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 |