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

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Sat Apr 18 08:16:43 PDT 2020



> On Apr 17, 2020, at 17:30, Shoaib Meenai <smeenai at fb.com> wrote:
> 
> subprocess.list2cmdline might be useful here. It's undocumented (or at least it was at some point), but it's designed for this.

Woah, thanks a lot for this! This is exactly what I needed, and in fact it appears to handle shell builtins correctly (which didn't work in my first patch and caused me to revert it).

Thanks!
Louis

> 
> On 4/17/20, 1:46 PM, "libcxx-commits on behalf of Louis Dionne via libcxx-commits" <libcxx-commits-bounces at lists.llvm.org on behalf of libcxx-commits at lists.llvm.org> wrote:
> 
> 
>    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.
> 
> 
> 
>    _______________________________________________
>    libcxx-commits mailing list
>    libcxx-commits at lists.llvm.org
>    https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_libcxx-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Hl9-ZiiL2yqSV5HmNTc7zfpLxwe0WQzYs5zejcFrQDk&s=Y792m9ysaDPcil_LdYIBYPsxwxtajWExJC4SwpvumZw&e= 
> 
> 



More information about the libcxx-commits mailing list