From 248349f25e33e83eb55ed4da48a704c2db1de4af Mon Sep 17 00:00:00 2001 From: Fiona Ebner Date: Mon, 27 Jan 2025 12:29:13 +0100 Subject: [PATCH] parse config: skip unknown sections and warn about their presence 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 Link: https://lore.proxmox.com/20250127112923.31703-7-f.ebner@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'