소스 검색

dpkg-source: do not allow underscore in component name for supplementary tarballs

According the documentation they were never meant to be allowed
but usage of perl's \w allowed them nevertheless. [\w-] has now been
replaced by [[:alnum:]-] everywhere so that the code fits the
documentation.
Raphaël Hertzog 16 년 전
부모
커밋
ff03345b7a
3개의 변경된 파일7개의 추가작업 그리고 4개의 파일을 삭제
  1. 3 0
      debian/changelog
  2. 2 2
      scripts/Dpkg/Source/Package.pm
  3. 2 2
      scripts/Dpkg/Source/Package/V2.pm

+ 3 - 0
debian/changelog

@@ -17,6 +17,9 @@ dpkg (1.15.6.2) UNRELEASED; urgency=low
   * Fix dpkg to not lose package metadata on filesystems where readdir()
   * Fix dpkg to not lose package metadata on filesystems where readdir()
     returns new files added after the opendir() call, btrfs in particular
     returns new files added after the opendir() call, btrfs in particular
     triggered the problematic behaviour. Closes: #575891
     triggered the problematic behaviour. Closes: #575891
+  * Tigthen the regex used by dpkg-source to match the component name of
+    supplementary tarballs so that undercore (_) are not allowed as it was
+    supposed to be.
 
 
   [ Updated dpkg translations ]
   [ Updated dpkg translations ]
   * German (Sven Joachim).
   * German (Sven Joachim).

+ 2 - 2
scripts/Dpkg/Source/Package.pm

@@ -233,7 +233,7 @@ sub find_original_tarballs {
 		($opts{include_main} and
 		($opts{include_main} and
 		 /^\Q$basename\E\.orig\.tar\.$opts{extension}$/) or
 		 /^\Q$basename\E\.orig\.tar\.$opts{extension}$/) or
 		($opts{include_supplementary} and
 		($opts{include_supplementary} and
-		 /^\Q$basename\E\.orig-[\w-]+\.tar\.$opts{extension}$/)
+		 /^\Q$basename\E\.orig-[[:alnum:]-]+\.tar\.$opts{extension}$/)
 	    } readdir(DIR);
 	    } readdir(DIR);
         closedir(DIR);
         closedir(DIR);
     }
     }
@@ -317,7 +317,7 @@ sub extract {
         my ($dirname, $destdir) = fileparse($newdirectory);
         my ($dirname, $destdir) = fileparse($newdirectory);
         $destdir ||= "./";
         $destdir ||= "./";
 	my $ext = $compression_re_file_ext;
 	my $ext = $compression_re_file_ext;
-        foreach my $orig (grep { /^\Q$basename\E\.orig(-\w+)?\.tar\.$ext$/ }
+        foreach my $orig (grep { /^\Q$basename\E\.orig(-[[:alnum:]-]+)?\.tar\.$ext$/ }
                           $self->get_files())
                           $self->get_files())
         {
         {
             my $src = File::Spec->catfile($self->{'basedir'}, $orig);
             my $src = File::Spec->catfile($self->{'basedir'}, $orig);

+ 2 - 2
scripts/Dpkg/Source/Package/V2.pm

@@ -104,7 +104,7 @@ sub do_extract {
         $seen{$uncompressed} = 1;
         $seen{$uncompressed} = 1;
         if ($file =~ /^\Q$basename\E\.orig\.tar\.$re_ext$/) {
         if ($file =~ /^\Q$basename\E\.orig\.tar\.$re_ext$/) {
             $tarfile = $file;
             $tarfile = $file;
-        } elsif ($file =~ /^\Q$basename\E\.orig-([\w-]+)\.tar\.$re_ext$/) {
+        } elsif ($file =~ /^\Q$basename\E\.orig-([[:alnum:]-]+)\.tar\.$re_ext$/) {
             $origtar{$1} = $file;
             $origtar{$1} = $file;
         } elsif ($file =~ /^\Q$basenamerev\E\.debian\.tar\.$re_ext$/) {
         } elsif ($file =~ /^\Q$basenamerev\E\.debian\.tar\.$re_ext$/) {
             $debianfile = $file;
             $debianfile = $file;
@@ -276,7 +276,7 @@ sub do_build {
             $tarfile = $_;
             $tarfile = $_;
             push @origtarballs, $_;
             push @origtarballs, $_;
             $self->add_file($_);
             $self->add_file($_);
-        } elsif (/\.orig-([\w-]+)\.tar\.$compression_re_file_ext$/) {
+        } elsif (/\.orig-([[:alnum:]-]+)\.tar\.$compression_re_file_ext$/) {
             $origtar{$1} = $_;
             $origtar{$1} = $_;
             push @origtarballs, $_;
             push @origtarballs, $_;
             $self->add_file($_);
             $self->add_file($_);