The following commit has been merged in the squeeze branch:
commit db49f493baaac2387a4dd76370c1018109e31dfc
Author: Adam D. Barratt <[email protected]>
Date:   Fri Sep 14 12:38:14 2012 -0500

    dget: fix arbitrary code execution (CVE-2012-2242)
    
    The change to the last call to system() is just for consistency.
    
    Reviewed-by: Raphael Geissert <[email protected]>
    Signed-off-by: Raphael Geissert <[email protected]>
    Signed-off-by: James McCoy <[email protected]>

diff --git a/scripts/dget.pl b/scripts/dget.pl
index c2495b2..d69e4ac 100755
--- a/scripts/dget.pl
+++ b/scripts/dget.pl
@@ -105,7 +105,7 @@ sub wget {
     # schemes not supported by all backends
     if ($url =~ m!^(file|copy)://(/.+)!) {
        if ($1 eq "copy" or not link($2, $file)) {
-           system "cp -a $2 $file";
+           system ('cp', '-a', $2, $file);
            return $? >> 8;
        }
        return;
@@ -175,7 +175,7 @@ sub get_file {
                    print "$progname: using $path/$file (hardlink)\n" unless 
$opt->{'quiet'};
                } else {
                    print "$progname: using $path/$file (copy)\n" unless 
$opt->{'quiet'};
-                   system "cp -a $path/$file $file";
+                   system ('cp', '-a', "$path/$file", $file);
                }
                last;
            }
@@ -192,7 +192,7 @@ sub get_file {
     }
 
     # try apt-get if it is still not there
-    if (not -e $file and $file =~ 
m!^([a-z0-9.+-]{2,})_[^/]+\.(?:diff\.gz|tar\.gz)$!) {
+    if (not -e $file and $file =~ 
m!^([a-z0-9][a-z0-9.+-]+)_[^/]+\.(?:diff\.gz|tar\.gz)$!) {
        my $cmd = "apt-get source --print-uris $1";
        my $apt = new IO::File("$cmd |") or die "$cmd: $!";
        while(<$apt>) {
@@ -444,7 +444,7 @@ for my $arg (@ARGV) {
            if ($dget_verify) { # We are duplicating work here a bit as
                # dpkg-source -x will also verify signatures. Still, we
                # also want to barf with -d, and on unsigned packages.
-               system 'dscverify', $found_dsc;
+               system ('dscverify', $found_dsc);
                exit $? >> 8 if $? >> 8 != 0;
            }
            my @cmd = qw(dpkg-source -x);

-- 
Git repository for devscripts

_______________________________________________
devscripts-devel mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/devscripts-devel

Reply via email to