|
Michal Toman |
b6c8f8f |
From d344a5ade872ba59ab18fdc73bff1de6ddf1fbc9 Mon Sep 17 00:00:00 2001
|
|
Michal Toman |
b6c8f8f |
From: Michal Toman <michal.toman@gmail.com>
|
|
Michal Toman |
b6c8f8f |
Date: Wed, 11 Mar 2015 09:23:36 +0000
|
|
Michal Toman |
b6c8f8f |
Subject: [PATCH] fix the invocation of mock shell
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
Formerly mock shell has taken all the excessive arguments
|
|
Michal Toman |
b6c8f8f |
from the command line and merged them into the resulting
|
|
Michal Toman |
b6c8f8f |
command executed in the chrooted shell. This changed
|
|
Michal Toman |
b6c8f8f |
and mock shell now only accepts a single command line
|
|
Michal Toman |
b6c8f8f |
argument - the whole command line to be forwarded to
|
|
Michal Toman |
b6c8f8f |
the chrooted shell.
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
Signed-off-by: Michal Toman <michal.toman@gmail.com>
|
|
Michal Toman |
b6c8f8f |
---
|
|
Michal Toman |
b6c8f8f |
src/lib/retrace.py | 12 ++++++------
|
|
Michal Toman |
b6c8f8f |
src/retrace-server-worker | 24 ++++++++++++------------
|
|
Michal Toman |
b6c8f8f |
2 files changed, 18 insertions(+), 18 deletions(-)
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
diff --git a/src/lib/retrace.py b/src/lib/retrace.py
|
|
Michal Toman |
b6c8f8f |
index 772b638..392d1cd 100644
|
|
Michal Toman |
b6c8f8f |
--- a/src/lib/retrace.py
|
|
Michal Toman |
b6c8f8f |
+++ b/src/lib/retrace.py
|
|
Michal Toman |
b6c8f8f |
@@ -419,21 +419,21 @@ def run_gdb(savedir):
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
with open(os.devnull, "w") as null:
|
|
Michal Toman |
b6c8f8f |
child = Popen(["/usr/bin/mock", "shell", "--configdir", savedir,
|
|
Michal Toman |
b6c8f8f |
- "--", "ls", "'%s'" % executable],
|
|
Michal Toman |
b6c8f8f |
+ "--", "ls '%s'" % executable],
|
|
Michal Toman |
b6c8f8f |
stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
output = child.communicate()[0]
|
|
Michal Toman |
b6c8f8f |
if output.strip() != executable:
|
|
Michal Toman |
b6c8f8f |
raise Exception("The appropriate package set could not be installed")
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
chmod = call(["/usr/bin/mock", "shell", "--configdir", savedir,
|
|
Michal Toman |
b6c8f8f |
- "--", "/bin/chmod", "a+r", "'%s'" % executable],
|
|
Michal Toman |
b6c8f8f |
+ "--", "/bin/chmod a+r '%s'" % executable],
|
|
Michal Toman |
b6c8f8f |
stdout=null, stderr=null)
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
if chmod != 0:
|
|
Michal Toman |
b6c8f8f |
raise Exception, "Unable to chmod the executable"
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
child = Popen(["/usr/bin/mock", "shell", "--configdir", savedir,
|
|
Michal Toman |
b6c8f8f |
- "--", "ls", "'%s'" % EXPLOITABLE_PLUGIN_PATH],
|
|
Michal Toman |
b6c8f8f |
+ "--", "ls '%s'" % EXPLOITABLE_PLUGIN_PATH],
|
|
Michal Toman |
b6c8f8f |
stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
add_exploitable = child.communicate()[0].strip() == EXPLOITABLE_PLUGIN_PATH
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
@@ -461,13 +461,13 @@ def run_gdb(savedir):
|
|
Michal Toman |
b6c8f8f |
raise Exception("Unable to copy GDB launcher into chroot")
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
chmod = call(["/usr/bin/mock", "--configdir", savedir, "shell",
|
|
Michal Toman |
b6c8f8f |
- "--", "/bin/chmod", "a+rx", "/var/spool/abrt/gdb.sh"],
|
|
Michal Toman |
b6c8f8f |
+ "--", "/bin/chmod a+rx /var/spool/abrt/gdb.sh"],
|
|
Michal Toman |
b6c8f8f |
stdout=null, stderr=null)
|
|
Michal Toman |
b6c8f8f |
if chmod:
|
|
Michal Toman |
b6c8f8f |
raise Exception("Unable to chmod GDB launcher")
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
child = Popen(["/usr/bin/mock", "shell", "--configdir", savedir,
|
|
Michal Toman |
b6c8f8f |
- "--", "su", "mockbuild", "-c", "'/bin/sh /var/spool/abrt/gdb.sh'",
|
|
Michal Toman |
b6c8f8f |
+ "--", "su mockbuild -c '/bin/sh /var/spool/abrt/gdb.sh'",
|
|
Michal Toman |
b6c8f8f |
# redirect GDB's stderr, ignore mock's stderr
|
|
Michal Toman |
b6c8f8f |
"2>&1"], stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
@@ -712,7 +712,7 @@ def prepare_debuginfo(vmcore, chroot=None, kernelver=None):
|
|
Michal Toman |
b6c8f8f |
if chroot:
|
|
Michal Toman |
b6c8f8f |
with open(os.devnull, "w") as null:
|
|
Michal Toman |
b6c8f8f |
child = Popen(["/usr/bin/mock", "--configdir", chroot, "shell",
|
|
Michal Toman |
b6c8f8f |
- "--", "crash", "-s", vmcore, vmlinux],
|
|
Michal Toman |
b6c8f8f |
+ "--", "crash -s %s %s" % (vmcore, vmlinux)],
|
|
Michal Toman |
b6c8f8f |
stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
else:
|
|
Michal Toman |
b6c8f8f |
child = Popen(["crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=STDOUT)
|
|
Michal Toman |
b6c8f8f |
diff --git a/src/retrace-server-worker b/src/retrace-server-worker
|
|
Michal Toman |
b6c8f8f |
index dd1e10f..931888a 100755
|
|
Michal Toman |
b6c8f8f |
--- a/src/retrace-server-worker
|
|
Michal Toman |
b6c8f8f |
+++ b/src/retrace-server-worker
|
|
Michal Toman |
b6c8f8f |
@@ -335,10 +335,10 @@ def start_retrace():
|
|
Michal Toman |
b6c8f8f |
retrace_run(25, ["/usr/bin/mock", "init", "--configdir", task.get_savedir()])
|
|
Michal Toman |
b6c8f8f |
if CONFIG["UseFafPackages"]:
|
|
Michal Toman |
b6c8f8f |
retrace_run(26, ["/usr/bin/mock", "--configdir", task.get_savedir(), "shell", "--",
|
|
Michal Toman |
b6c8f8f |
- "bash", "-c", "'for PKG in /packages/*; do rpm2cpio \\$PKG | " \
|
|
Michal Toman |
b6c8f8f |
- "cpio -muid --quiet; done'"])
|
|
Michal Toman |
b6c8f8f |
+ "bash -c 'for PKG in /packages/*; "
|
|
Michal Toman |
b6c8f8f |
+ "do rpm2cpio $PKG | cpio -muid --quiet; done'"])
|
|
Michal Toman |
b6c8f8f |
retrace_run(27, ["/usr/bin/mock", "--configdir", task.get_savedir(), "shell",
|
|
Michal Toman |
b6c8f8f |
- "--", "chgrp", "-R", "mockbuild", "/var/spool/abrt/crash"])
|
|
Michal Toman |
b6c8f8f |
+ "--", "chgrp -R mockbuild /var/spool/abrt/crash"])
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
# generate backtrace
|
|
Michal Toman |
b6c8f8f |
task.set_status(STATUS_BACKTRACE)
|
|
Michal Toman |
b6c8f8f |
@@ -405,7 +405,7 @@ def mock_find_vmlinux(cfgdir, candidates):
|
|
Michal Toman |
b6c8f8f |
with open(os.devnull, "w") as null:
|
|
Michal Toman |
b6c8f8f |
for cand in candidates:
|
|
Michal Toman |
b6c8f8f |
child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
|
|
Michal Toman |
b6c8f8f |
- "test", "-f", cand, "&&", "echo", cand], stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
+ "test -f %s && echo %s" % (cand, cand)], stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
output = child.communicate()[0].strip()
|
|
Michal Toman |
b6c8f8f |
child.wait()
|
|
Michal Toman |
b6c8f8f |
if output == cand:
|
|
Michal Toman |
b6c8f8f |
@@ -517,14 +517,14 @@ def start_vmcore():
|
|
Michal Toman |
b6c8f8f |
# generate the log
|
|
Michal Toman |
b6c8f8f |
with open(os.devnull, "w") as null:
|
|
Michal Toman |
b6c8f8f |
child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
|
|
Michal Toman |
b6c8f8f |
- "crash", "--minimal", "-s", vmcore, vmlinux],
|
|
Michal Toman |
b6c8f8f |
+ "crash --minimal -s %s %s" % (vmcore, vmlinux)],
|
|
Michal Toman |
b6c8f8f |
stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
kernellog = child.communicate("log\nquit\n")[0]
|
|
Michal Toman |
b6c8f8f |
if child.wait():
|
|
Michal Toman |
b6c8f8f |
log_warn("crash 'log' exitted with %d" % child.returncode)
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
|
|
Michal Toman |
b6c8f8f |
- "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
+ "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
crash_bt_a = child.communicate("bt -a\nquit\n")[0]
|
|
Michal Toman |
b6c8f8f |
if child.wait():
|
|
Michal Toman |
b6c8f8f |
log_warn("crash 'bt -a' exitted with %d" % child.returncode)
|
|
Michal Toman |
b6c8f8f |
@@ -533,7 +533,7 @@ def start_vmcore():
|
|
Michal Toman |
b6c8f8f |
crash_kmem_f = None
|
|
Michal Toman |
b6c8f8f |
if CONFIG["VmcoreRunKmem"] == 1:
|
|
Michal Toman |
b6c8f8f |
child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
|
|
Michal Toman |
b6c8f8f |
- "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
+ "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
crash_kmem_f = child.communicate("kmem -f\nquit\n")[0]
|
|
Michal Toman |
b6c8f8f |
if child.wait():
|
|
Michal Toman |
b6c8f8f |
log_warn("crash 'kmem -f' exitted with %d" % child.returncode)
|
|
Michal Toman |
b6c8f8f |
@@ -541,7 +541,7 @@ def start_vmcore():
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
if CONFIG["VmcoreRunKmem"] == 2:
|
|
Michal Toman |
b6c8f8f |
child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
|
|
Michal Toman |
b6c8f8f |
- "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
+ "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
crash_kmem_f = child.communicate("set hash off\nkmem -f\nset hash on\nquit\n")[0]
|
|
Michal Toman |
b6c8f8f |
if child.wait():
|
|
Michal Toman |
b6c8f8f |
log_warn("crash 'kmem -f' exitted with %d" % child.returncode)
|
|
Michal Toman |
b6c8f8f |
@@ -550,28 +550,28 @@ def start_vmcore():
|
|
Michal Toman |
b6c8f8f |
crash_kmem_z = None
|
|
Michal Toman |
b6c8f8f |
if CONFIG["VmcoreRunKmem"] == 3:
|
|
Michal Toman |
b6c8f8f |
child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
|
|
Michal Toman |
b6c8f8f |
- "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
+ "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
crash_kmem_z = child.communicate("kmem -z\nquit\n")[0]
|
|
Michal Toman |
b6c8f8f |
if child.wait():
|
|
Michal Toman |
b6c8f8f |
log_warn("crash 'kmem -z' exitted with %d" % child.returncode)
|
|
Michal Toman |
b6c8f8f |
crash_kmem_z = None
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
|
|
Michal Toman |
b6c8f8f |
- "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
+ "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
crash_sys = child.communicate("sys\nquit\n")[0]
|
|
Michal Toman |
b6c8f8f |
if child.wait():
|
|
Michal Toman |
b6c8f8f |
log_warn("crash 'sys' exitted with %d" % child.returncode)
|
|
Michal Toman |
b6c8f8f |
crash_sys = None
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
|
|
Michal Toman |
b6c8f8f |
- "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
+ "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
crash_sys_c = child.communicate("sys -c\nquit\n")[0]
|
|
Michal Toman |
b6c8f8f |
if child.wait():
|
|
Michal Toman |
b6c8f8f |
log_warn("crash 'sys -c' exitted with %d" % child.returncode)
|
|
Michal Toman |
b6c8f8f |
crash_sys_c = None
|
|
Michal Toman |
b6c8f8f |
|
|
Michal Toman |
b6c8f8f |
child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
|
|
Michal Toman |
b6c8f8f |
- "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
+ "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
|
|
Michal Toman |
b6c8f8f |
crash_foreach_bt = child.communicate("foreach bt\nquit\n")[0]
|
|
Michal Toman |
b6c8f8f |
if child.wait():
|
|
Michal Toman |
b6c8f8f |
log_warn("crash 'foreach bt' exitted with %d" % child.returncode)
|
|
Michal Toman |
b6c8f8f |
--
|
|
Michal Toman |
b6c8f8f |
2.1.0
|
|
Michal Toman |
b6c8f8f |
|