Currently, keys in an unknown section will be interpreted as still
belonging to the last section and might erroneously overwrite values
in that way. Explicitly ignore unknown sections to avoid this while
warning the user.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
---
 PVE/QemuServer.pm                                         | 8 ++++++++
 test/parse-config-expected/unknown-sections.conf          | 8 ++++----
 .../unknown-sections.conf.strict.error                    | 2 +-
 3 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index d8bb21d6..e0cca0e4 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -2251,8 +2251,16 @@ sub parse_vm_config {
            $finish_description->();
            $conf = $res->{snapshots}->{$section->{name}} = {};
            next;
+       } elsif ($line =~ m/^\[([^\]]*)\]\s*$/i) {
+           my $unknown_section = $1;
+           $section = undef;
+           $finish_description->();
+           $handle_error->("vm $vmid - skipping unknown section: 
'$unknown_section'\n");
+           next;
        }
 
+       next if !defined($section);
+
        if ($line =~ m/^\#(.*)$/) {
            $descr = '' if !defined($descr);
            $descr .= PVE::Tools::decode_text($1) . "\n";
diff --git a/test/parse-config-expected/unknown-sections.conf 
b/test/parse-config-expected/unknown-sections.conf
index 08f1a3e2..6329c33a 100644
--- a/test/parse-config-expected/unknown-sections.conf
+++ b/test/parse-config-expected/unknown-sections.conf
@@ -5,7 +5,7 @@ ide2: lvm:vm-120-cloudinit,media=cdrom
 ipconfig0: ip6=dhcp
 memory: 4096
 meta: creation-qemu=9.0.2,ctime=1725975013
-name: foo
+name: deb1223
 net0: vmxnet3=BC:24:11:2C:69:EC,bridge=vnet0,firewall=1
 numa: 0
 ostype: l26
@@ -18,11 +18,11 @@ unused0: rbd:vm-120-disk-0
 vmgenid: 7079e97c-50e3-4079-afe7-23e67566b946
 
 [PENDING]
-bios: seabios
+bios: ovmf
 
 [special:cloudinit]
 ipconfig0: ip=dhcp,ip6=dhcp
-name: bar
+name: deb122
 
 [foo]
 boot: order=scsi0
@@ -32,7 +32,7 @@ ide2: lvm:vm-120-cloudinit,media=cdrom
 ipconfig0: ip=dhcp,ip6=dhcp
 memory: 4096
 meta: creation-qemu=9.0.2,ctime=1725975013
-name: baz
+name: deb1223
 net0: vmxnet3=BC:24:11:2C:69:EC,bridge=vnet0,firewall=1
 numa: 0
 ostype: l26
diff --git a/test/parse-config-expected/unknown-sections.conf.strict.error 
b/test/parse-config-expected/unknown-sections.conf.strict.error
index e7004dc9..7f921a70 100644
--- a/test/parse-config-expected/unknown-sections.conf.strict.error
+++ b/test/parse-config-expected/unknown-sections.conf.strict.error
@@ -1 +1 @@
-vm 8006 - unable to parse config: [special:unknown123]
+vm 8006 - skipping unknown section: 'special:unknown123'
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to