Browse Source

Dpkg::Control::HashCore: Remove trailing space before handling dot-separators

Regression introduced in commit aea291e3db1ac0414dcf005a0a607e78bdd77a5e.

Any spaces after the blank line dot-separator should be stripped before
handling the dot-separator, otherwise we get duplicated dots in field
contents.

Closes: #789580
Stable-Candidate: 1.16.x 1.17.x
Guillem Jover 8 years ago
parent
commit
95d9b43f8a

+ 3 - 0
debian/changelog

@@ -13,6 +13,9 @@ dpkg (1.18.2) UNRELEASED; urgency=low
     - Add new function changelog_parse_debian() in Dpkg::Changelog::Parse, and
       use it in changelog_parse() instead of the external plugin parser when
       the input format is “debian”. This significantly speeds up the parsing.
+    - Remove trailing space before handling blank line dot-separator in
+      Dpkg::Control::HashCore. Regression introduced in dpkg 1.18.0.
+      Reported by Jakub Wilk <jwilk@debian.org>. Closes: #789580
   * Documentation:
     - Fix grammar in dpkg-architecture(1).
       Thanks to Chris Lamb <lamby@debian.org>. Closes: #787616

+ 1 - 1
scripts/Dpkg/Control/HashCore.pm

@@ -220,10 +220,10 @@ sub parse {
 	    unless (defined($cf)) {
 		$self->parse_error($desc, g_('continued value line not in field'));
             }
+	    $line =~ s/\s*$//;
 	    if ($line =~ /^\.+$/) {
 		$line = substr $line, 1;
 	    }
-	    $line =~ s/\s*$//;
 	    $self->{$cf} .= "\n$line";
 	} elsif (m/^-----BEGIN PGP SIGNED MESSAGE-----[\r\t ]*$/) {
 	    $expect_pgp_sig = 1;

+ 2 - 0
scripts/t/Dpkg_Control.t

@@ -53,6 +53,7 @@ Long-Field: line1
  line 2 line 2 line 2
  .
    line 3 line 3 line 3
+ .
  ..
  line 4
 Empty-Field:
@@ -83,6 +84,7 @@ is($src->{'long-field'},
 line 2 line 2 line 2
 
   line 3 line 3 line 3
+
 .
 line 4', 'Get multi-line field');
 is($src->{'Empty-field'}, '', 'Get empty field');

+ 1 - 0
scripts/t/Dpkg_Control/control-1

@@ -7,6 +7,7 @@ long-field: line1
  line 2 line 2 line 2    
  .
    line 3 line 3 line 3
+ .	  
  ..
  line 4
 empty-field: