mirror of
https://github.com/topjohnwu/selinux.git
synced 2025-02-02 01:12:04 +00:00
libselinux: Fix restorecon when path has no context
When a path has no context, for example, when the file was created when selinux was disabled, selinux.restorecon(path) will fail: >>> selinux.restorecon('/etc/multipath.conf.new') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.7/site-packages/selinux/__init__.py", line 88, in restorecon status, oldcontext = lgetfilecon(path) OSError: [Errno 61] No data available This failure does not seems to be useful, as we can successfully match the context for this path using selinux.matchpathcon(), and set it successfully using selinux.chcon(). The failure is caused by trying to avoid the lsetfilecon() call if the current context is does not need update. This patch handles this specific error from lgetfilecon(), preventing this failure. Signed-off-by: Nir Soffer <nsoffer@redhat.com>
This commit is contained in:
parent
59550c077c
commit
f2e38b609c
@ -8,7 +8,7 @@
|
||||
|
||||
%pythoncode %{
|
||||
|
||||
import shutil, os, stat
|
||||
import shutil, os, errno, stat
|
||||
|
||||
DISABLED = -1
|
||||
PERMISSIVE = 0
|
||||
@ -26,7 +26,12 @@ def restorecon(path, recursive=False):
|
||||
status, context = matchpathcon(path, mode)
|
||||
|
||||
if status == 0:
|
||||
status, oldcontext = lgetfilecon(path)
|
||||
try:
|
||||
status, oldcontext = lgetfilecon(path)
|
||||
except OSError as e:
|
||||
if e.errno != errno.ENODATA:
|
||||
raise
|
||||
oldcontext = None
|
||||
if context != oldcontext:
|
||||
lsetfilecon(path, context)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user