]> git.proxmox.com Git - pve-common.git/commitdiff
Fix 2339: Handle multiple blank lines correctly in SectionConfig
authorFabian Ebner <f.ebner@proxmox.com>
Wed, 28 Aug 2019 09:22:38 +0000 (11:22 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 4 Sep 2019 14:17:55 +0000 (16:17 +0200)
It turns out that the line number counting was also broken (even on
files without multiple blanks), since the body of the while inside
the nextline subroutine would not be executed for a blank.
I guess the subroutine was intended to skip comments and blanks, but
since we use blanks to recognize the end of a section, I changed it
to only skip comments.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
src/PVE/SectionConfig.pm

index dcecce6a721d51bb6c5e0cf9f17fb8156983d27a..a760459276249506e52054675eeeaa3a7bb9ce13 100644 (file)
@@ -302,13 +302,16 @@ sub parse_config {
     my $lineno = 0;
     my @lines = split(/\n/, $raw);
     my $nextline = sub {
-       while (my $line = shift @lines) {
+       while (defined(my $line = shift @lines)) {
            $lineno++;
-           return $line if $line !~ /^\s*(?:#|$)/;
+           return $line if ($line !~ /^\s*#/);
        }
     };
 
-    while (my $line = &$nextline()) {
+    while (@lines) {
+       my $line = $nextline->();
+       next if !$line;
+
        my $errprefix = "file $filename line $lineno";
 
        my ($type, $sectionId, $errmsg, $config) = $class->parse_section_header($line);