[libcxx-commits] [libcxx] f8452dd - [libc++] Use proper shell escaping in the executors

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Fri Apr 17 13:46:50 PDT 2020


Author: Louis Dionne
Date: 2020-04-17T16:46:43-04:00
New Revision: f8452ddfcc3336e42544a35481507f0b3bae423e

URL: https://github.com/llvm/llvm-project/commit/f8452ddfcc3336e42544a35481507f0b3bae423e
DIFF: https://github.com/llvm/llvm-project/commit/f8452ddfcc3336e42544a35481507f0b3bae423e.diff

LOG: [libc++] Use proper shell escaping in the executors

Added: 
    

Modified: 
    libcxx/utils/run.py
    libcxx/utils/ssh.py

Removed: 
    


################################################################################
diff  --git a/libcxx/utils/run.py b/libcxx/utils/run.py
index 7cdf65264ec0..e9f9859807b3 100644
--- a/libcxx/utils/run.py
+++ b/libcxx/utils/run.py
@@ -14,6 +14,7 @@
 
 import argparse
 import os
+import pipes
 import shutil
 import subprocess
 import sys
@@ -57,8 +58,9 @@ def main():
             else:
                 shutil.copy2(dep, args.execdir)
 
-        # Run the executable with the given environment in the execution directory.
-        return subprocess.call(' '.join(remaining), cwd=args.execdir, env=env, shell=True)
+        # Run the command line with the given environment in the execution directory.
+        commandLine = (pipes.quote(x) for x in remaining)
+        return subprocess.call(' '.join(commandLine), cwd=args.execdir, env=env, shell=True)
     finally:
         shutil.rmtree(args.execdir)
 

diff  --git a/libcxx/utils/ssh.py b/libcxx/utils/ssh.py
index c7d8c97a1407..f9bcabe3c321 100644
--- a/libcxx/utils/ssh.py
+++ b/libcxx/utils/ssh.py
@@ -15,6 +15,7 @@
 
 import argparse
 import os
+import pipes
 import posixpath
 import subprocess
 import sys
@@ -97,10 +98,11 @@ def main():
         # host by transforming the path of test-executables to their path in the
         # temporary directory, where we know they have been copied when we handled
         # test dependencies above.
+        commandLine = (pathOnRemote(x) if isTestExe(x) else x for x in commandLine)
         remoteCommands += [
             'cd {}'.format(tmp),
             'export {}'.format(' '.join(args.env)),
-            ' '.join(pathOnRemote(x) if isTestExe(x) else x for x in commandLine)
+            ' '.join(pipes.quote(x) for x in commandLine)
         ]
 
         # Finally, SSH to the remote host and execute all the commands.


        


More information about the libcxx-commits mailing list