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 dcecce6..a760459 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);