Branch: refs/heads/blead
Home: https://github.com/Perl/perl5
Commit: 9a99c2bec339a81cc62c0d6a25c4e1343be0eaad
https://github.com/Perl/perl5/commit/9a99c2bec339a81cc62c0d6a25c4e1343be0eaad
Author: Lukas Mai <[email protected]>
Date: 2024-07-31 (Wed, 31 Jul 2024)
Changed paths:
M t/io/pipe.t
Log Message:
-----------
make tests pass when build directory name contains @ $ \ "
If you build and test perl from a directory whose name contains an `@`
sign (such as `/tmp/hello@world/perl5`), one of the tests in
`t/io/pipe.t` fails.
This is because it takes the path to the perl binary (which is
`/tmp/hello@world/perl5/perl` in our example) and interpolates it in
double-quotes into a string that is then eval'd and run (via
`fresh_perl()`). Thus the code that the interpreter in the child process
sees is:
$Perl = "/tmp/hello@world/perl5/perl";
which of course tries to interpolate the (non-existent) `@world` array.
(Similar problems would be caused by paths containing `$` or `"`
characters).
Switching to single quotes, as in
$Perl = '/tmp/hello@world/perl5/perl';
would fix this case, but would still be vulnerable to a path containing
`'` symbols.
Sidestep the problem by using `q` (to prevent variable interpolation)
with a NUL byte delimiter (which cannot occur in path names).
Found while investigating #22446.
To unsubscribe from these emails, change your notification settings at
https://github.com/Perl/perl5/settings/notifications