Bug#533380: perl-modules: IPC::Cmd fails with commands formatted as arrayrefs
Niko Tyni
ntyni at debian.org
Wed Jul 8 20:19:02 UTC 2009
tag 533380 - patch
thanks
On Wed, Jul 08, 2009 at 07:24:01PM +0300, Niko Tyni wrote:
> On Tue, Jun 16, 2009 at 05:04:31PM -0700, Robert Buels wrote:
> > Package: perl-modules
> > Version: 5.10.0-23
> > Severity: important
> > Tags: patch
> >
> >
> > test case:
> > perl -MIPC::Cmd=run -MFatal=run -e 'run(verbose => 1, command => [@ARGV] )' echo foo
> > should output:
> > Running [echo, foo]...
> > foo
> >
> > This is fixed upstream as of IPC::Cmd version 0.41_01. Current
> > packaged version is 0.40_1.
>
> Thanks for the report, I'll include the fix with the next upload.
Unfortunately the fix breaks the Archive::Extract tests. Possibly
cherry-picking the 0.41_05 fix mentioned below would help, but this is
getting to a point where I'd rather wait for the upcoming 5.10.1.
# Failed test 'extract() for 'y.tbz' reports success'
# at t/01_Archive-Extract.t line 328.
An strace shows a system() call bypassing the shell:
22335 execve("/bin/bunzip2", ["/bin/bunzip2", "-cd", "/tmp/buildd/perl-5.10.0/lib/Arch"..., "|", "/bin/tar", "-tf", "-"], [/* 17 vars */]) = 0
I'm not going to patch IPC::Cmd at least for 5.10.0-24.
Changes for 0.41_05 Mon Sep 22 14:22:45 CEST 2008
=================================================
* Address whitespace issues in commands: if the full command
contains special chars (ie, <,>,|,&) it needs to be stringified
for system() and ipc::open3 or the special chars are escaped
as arguments to the command. So, if you pass an arrayref as
command, we'll stringify it.
Of course that conflicts with arguments containing whitespace,
so if we need to stringify we'll also attempt to fixup any
arguments that have whitespace with the OS specific quote.
Cheers,
--
Niko Tyni ntyni at debian.org
More information about the Perl-maintainers
mailing list