diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-08-10 17:33:00 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-08-10 17:33:00 +0000 |
commit | ca9a0441e4bf226755aa29c3dc3a0d4867d32d89 (patch) | |
tree | 48bba2e8930b8364c2d99ce5b071fcd96577cca9 /pym/portage/_selinux.py | |
parent | 8e625c41a5417f697d67d8fe1c70b6b05435ab42 (diff) | |
download | portage-ca9a0441e4bf226755aa29c3dc3a0d4867d32d89.tar.gz portage-ca9a0441e4bf226755aa29c3dc3a0d4867d32d89.tar.bz2 portage-ca9a0441e4bf226755aa29c3dc3a0d4867d32d89.zip |
Bug #280998 - Misc selinux fixes. Thanks to Chris PeBenito
<pebenito@gentoo.org> for this patch.
svn path=/main/trunk/; revision=13977
Diffstat (limited to 'pym/portage/_selinux.py')
-rw-r--r-- | pym/portage/_selinux.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/pym/portage/_selinux.py b/pym/portage/_selinux.py index 2a50f7434..1b5f530ce 100644 --- a/pym/portage/_selinux.py +++ b/pym/portage/_selinux.py @@ -61,19 +61,27 @@ def rename(src, dest): finally: setfscreate() +def settype(newtype): + ret = getcontext().split(":") + ret[2] = newtype + return ":".join(ret) + def setexec(ctx="\n"): + if isinstance(ctx, unicode): + ctx = ctx.encode('utf_8', 'replace') if selinux.setexeccon(ctx) < 0: raise OSError("setexec: Failed setting exec() context \"%s\"." % ctx) def setfscreate(ctx="\n"): + if isinstance(ctx, unicode): + ctx = ctx.encode('utf_8', 'replace') if selinux.setfscreatecon(ctx) < 0: raise OSError( "setfscreate: Failed setting fs create context \"%s\"." % ctx) def spawn(selinux_type, spawn_func, mycommand, opt_name=None, **keywords): - con = getcontext().split(":") - con[2] = selinux_type - setexec(":".join(con)) + con = settype(selinux_type) + setexec(con) try: return spawn_func(mycommand, opt_name=opt_name, **keywords) finally: |