]> err.no Git - dpkg/commitdiff
Dpkg::IPC: avoid surprising execution via the shell
authorFrank Lichtenheld <djpig@debian.org>
Fri, 15 Feb 2008 19:41:38 +0000 (20:41 +0100)
committerFrank Lichtenheld <djpig@debian.org>
Fri, 15 Feb 2008 19:50:20 +0000 (20:50 +0100)
* scripts/Dpkg/IPC.pm (fork_and_exec): If @prog only
contains one entry exec() might execute it via the
shell if it deems it necessary. This is not intended,
so avoid this by giving $prog[0] explicetly as the
program to execute.

scripts/Dpkg/IPC.pm

index b3937cd6b2ba7fd3eaec1d2dcb5f588ca3165784..9c621f922a12c5ec66239776b21a1fd846866890 100644 (file)
@@ -75,7 +75,7 @@ sub fork_and_exec {
        # Close some inherited filehandles
         close($_) foreach (@{$opts{"close_in_child"}});
        # Execute the program
-        exec(@prog) or syserr(_g("exec %s"), "@prog");
+       exec({ $prog[0] } @prog) or syserr(_g("exec %s"), "@prog");
     }
     # Close handle that we can't use any more
     close($opts{"from_handle"}) if exists $opts{"from_handle"};