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