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