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

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Mon Apr 20 02:05:46 PDT 2020



> On Apr 20, 2020, at 02:33, Shoaib Meenai <smeenai at fb.com> wrote:
> 
> Idk if it has any special handling of shell builtins ... it just doesn't quote unless necessary, which probably works out in your favor here? But glad it was helpful!

Yes, I think that's probably it!

Louis

> 
> On 4/18/20, 8:16 AM, "Louis Dionne" <ldionne at apple.com> wrote:
> 
> 
> 
>> 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