On Tue, Sep 19, 2017 at 1:01 AM, William Roberts <bill.c.roberts@xxxxxxxxx> wrote: > On Mon, Sep 18, 2017 at 3:59 PM, William Roberts > <bill.c.roberts@xxxxxxxxx> wrote: >> On Mon, Sep 18, 2017 at 2:32 PM, Nicolas Iooss <nicolas.iooss@xxxxxxx> wrote: >>> >>> On a system without any file context customizations, "sepolicy gui" >>> fails to load because it tries to read a non-existent file: >>> >>> FileNotFoundError: [Errno 2] No such file or directory: >>> '/etc/selinux/refpolicy-git/contexts/files/file_contexts.local' >>> >>> Once this issue is fixed, another one is triggered: >>> >>> FileNotFoundError: [Errno 2] No such file or directory: >>> '/etc/selinux/refpolicy-git/contexts/files/file_contexts.subs >>> >>> Use os.path.exists() to prevent trying to open non-existent files. >>> >>> Signed-off-by: Nicolas Iooss <nicolas.iooss@xxxxxxx> >>> --- >>> python/sepolicy/sepolicy/__init__.py | 4 ++++ >>> 1 file changed, 4 insertions(+) >>> >>> diff --git a/python/sepolicy/sepolicy/__init__.py b/python/sepolicy/sepolicy/__init__.py >>> index 03742346caf0..14d2ad634d7d 100644 >>> --- a/python/sepolicy/sepolicy/__init__.py >>> +++ b/python/sepolicy/sepolicy/__init__.py >>> @@ -523,6 +523,8 @@ def find_entrypoint_path(exe, exclude_list=[]): >>> >>> >>> def read_file_equiv(edict, fc_path, modify): >>> + if not os.path.exists(fc_path): >>> + return edict >>> fd = open(fc_path, "r") >>> fc = fd.readlines() >>> fd.close() >>> @@ -555,6 +557,8 @@ def get_local_file_paths(fc_path=selinux.selinux_file_context_path()): >>> if local_files: >>> return local_files >>> local_files = [] >>> + if not os.path.exists(fc_path + ".local"): >>> + return [] >>> fd = open(fc_path + ".local", "r") >> >> Why not use Try/Except here with a pass here? > > Wouldn't be a pass... but you get the idea. It modifies more lines, but as you suggested it I will send a v2 which uses try/except. In order to keep the code compatible with Python 2, it will be "except OSError" + errno checking to silently skip non-existing file. > >> While you're at it, maybe update this to use a with >> statement. instead of an explicit close call. >>> fc = fd.readlines() >>> fd.close() I will do it. Thanks for you suggestions. Nicolas