mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-21 13:15:25 +00:00
run.in: Detect binaries in builddir properly
When attempting to run: libvirt.git/_build # ./run --selinux ./src/libvirtd the following error is thrown: Refusing to change selinux context of file './src/libvirtd' outside build directory which is obviously wrong. The problem is 'being inside of build directory' is detected by simple progpath.startswith(builddir). While builddir is an absolute path, progpath isn't necessarily. And while looking into the code, I've noticed chcon() function accessing variable outside its scope when printing out the path it's working on. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
83bed4367e
commit
4381b83d99
10
run.in
10
run.in
@ -138,7 +138,7 @@ def change_unit(name, action):
|
||||
|
||||
|
||||
def chcon(path, user, role, type):
|
||||
print("Setting file context of {} to u={}, r={}, t={}...".format(progpath,
|
||||
print("Setting file context of {} to u={}, r={}, t={}...".format(path,
|
||||
user,
|
||||
role,
|
||||
type))
|
||||
@ -187,6 +187,10 @@ else:
|
||||
try:
|
||||
dorestorecon = False
|
||||
progpath = shutil.which(prog)
|
||||
if not progpath:
|
||||
raise Exception("Can't find executable {}"
|
||||
.format(prog))
|
||||
progpath = os.path.abspath(progpath)
|
||||
if len(try_stop_units):
|
||||
print("Temporarily stopping systemd units...")
|
||||
|
||||
@ -207,10 +211,6 @@ else:
|
||||
"executing a daemon directly without wrapper "
|
||||
"commands".format(prog))
|
||||
|
||||
if not progpath:
|
||||
raise Exception("Can't find executable {} for selinux labeling"
|
||||
.format(prog))
|
||||
|
||||
if not progpath.startswith(os.path.abspath(here)):
|
||||
raise Exception("Refusing to change selinux context of file "
|
||||
"'{}' outside build directory"
|
||||
|
Loading…
Reference in New Issue
Block a user