From c31d49234f0c7a81b69d525e249b154e11c486a9 Mon Sep 17 00:00:00 2001
|
|
From: Michal Vasilek <michal.vasilek@nic.cz>
|
|
Date: Thu, 12 Aug 2021 15:57:01 +0200
|
|
Subject: [PATCH] utils: use internal which implementation
|
|
|
|
* removes runtime dependency on which
|
|
* fixes aa-unconfined when ss is installed outside {/usr,}/bin
|
|
|
|
Signed-off-by: Michal Vasilek <michal.vasilek@nic.cz>
|
|
---
|
|
utils/aa-unconfined | 2 +-
|
|
utils/apparmor/easyprof.py | 8 +++-----
|
|
utils/apparmor/sandbox.py | 10 ++++------
|
|
3 files changed, 8 insertions(+), 12 deletions(-)
|
|
|
|
--- a/utils/aa-unconfined
|
|
+++ b/utils/aa-unconfined
|
|
@@ -116,7 +116,7 @@ def read_proc_current(filename):
|
|
pids = set()
|
|
if paranoid:
|
|
pids = get_all_pids()
|
|
-elif args.with_ss or (not args.with_netstat and (os.path.exists('/bin/ss') or os.path.exists('/usr/bin/ss'))):
|
|
+elif args.with_ss or (not args.with_netstat and (aa.which("ss") is not None)):
|
|
pids = get_pids_ss()
|
|
else:
|
|
pids = get_pids_netstat()
|
|
--- a/utils/apparmor/easyprof.py
|
|
+++ b/utils/apparmor/easyprof.py
|
|
@@ -22,6 +22,8 @@ import subprocess
|
|
import sys
|
|
import tempfile
|
|
|
|
+from apparmor.aa import which
|
|
+
|
|
#
|
|
# TODO: move this out to the common library
|
|
#
|
|
@@ -294,13 +296,9 @@ class AppArmorEasyProfile:
|
|
if os.path.isfile(self.conffile):
|
|
self._get_defaults()
|
|
|
|
- self.parser_path = '/sbin/apparmor_parser'
|
|
+ self.parser_path = which('apparmor_parser')
|
|
if opt.parser_path:
|
|
self.parser_path = opt.parser_path
|
|
- elif not os.path.exists(self.parser_path):
|
|
- rc, self.parser_path = cmd(['which', 'apparmor_parser'])
|
|
- if rc != 0:
|
|
- self.parser_path = None
|
|
|
|
self.parser_base = "/etc/apparmor.d"
|
|
if opt.parser_base:
|
|
--- a/utils/apparmor/sandbox.py
|
|
+++ b/utils/apparmor/sandbox.py
|
|
@@ -9,6 +9,7 @@
|
|
# ------------------------------------------------------------------
|
|
|
|
from apparmor.common import AppArmorException, debug, error, msg, cmd
|
|
+from apparmor.aa import which
|
|
import apparmor.easyprof
|
|
import optparse
|
|
import os
|
|
@@ -31,8 +32,7 @@ def check_requirements(binary):
|
|
|
|
for e in exes:
|
|
debug("Searching for '%s'" % e)
|
|
- rc, report = cmd(['which', e])
|
|
- if rc != 0:
|
|
+ if which(e) is None:
|
|
error("Could not find '%s'" % e, do_exit=False)
|
|
return False
|
|
|
|
@@ -306,8 +306,7 @@ class SandboxXephyr(SandboxXserver):
|
|
def start(self):
|
|
for e in ['Xephyr', 'matchbox-window-manager']:
|
|
debug("Searching for '%s'" % e)
|
|
- rc, report = cmd(['which', e])
|
|
- if rc != 0:
|
|
+ if which(e) is None:
|
|
raise AppArmorException("Could not find '%s'" % e)
|
|
|
|
'''Run any setup code'''
|
|
@@ -567,8 +566,7 @@ EndSection
|
|
|
|
def start(self):
|
|
debug("Searching for '%s'" % 'xpra')
|
|
- rc, report = cmd(['which', 'xpra'])
|
|
- if rc != 0:
|
|
+ if which('xpra') is None:
|
|
raise AppArmorException("Could not find '%s'" % 'xpra')
|
|
|
|
if self.driver == "xdummy":
|