-
Notifications
You must be signed in to change notification settings - Fork 36
Open
Milestone
Description
The idea of the "shell=true" argument is that the entire command line is
invoked via the shell. However, when StraceRunner is used, the independent
command-line arguments are merely appended to the strace line, converted to a
command-line. This means that a command like "touch foo.txt; touch bar.txt"
will result in strace invocation "strace -fo /tmp/tmp6VNsRF -e
trace=open,stat,stat64,lstat,lstat64,execve,exit_group,chdir,mkdir,rename,clone,
vfork,fork,symlink,creat touch foo.txt ; touch other.txt", which will mean that
"bar.txt" does not get marked as an output of the command: "touch foo.txt ;
touch bar.txt": { "foo.txt": "output-d41d8cd98f00b204e9800998ecf8427e" }
The real fix is to instead translate such a line to "strace -fo /tmp/tmp6VNsRF
-e
trace=open,stat,stat64,lstat,lstat64,execve,exit_group,chdir,mkdir,rename,clone,
vfork,fork,symlink,creat /bin/sh -c 'touch foo.txt ; touch other.txt'", and not
pass the shell=True to the underlying subprocess.Popen.
Original issue reported on code.google.com by nuutti.k...@gmail.com
on 9 Jul 2013 at 11:58