From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pve-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9])
	by lore.proxmox.com (Postfix) with ESMTPS id CC6851FF173
	for <inbox@lore.proxmox.com>; Mon, 27 Jan 2025 12:29:53 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 3A30128540;
	Mon, 27 Jan 2025 12:29:33 +0100 (CET)
From: Fiona Ebner <f.ebner@proxmox.com>
To: pve-devel@lists.proxmox.com
Date: Mon, 27 Jan 2025 12:29:13 +0100
Message-Id: <20250127112923.31703-7-f.ebner@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250127112923.31703-1-f.ebner@proxmox.com>
References: <20250127112923.31703-1-f.ebner@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.044 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DMARC_MISSING             0.1 Missing DMARC policy
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
 T_SCC_BODY_TEXT_LINE    -0.01 -
Subject: [pve-devel] [PATCH qemu-server v5 06/16] parse config: skip unknown
 sections and warn about their presence
X-BeenThere: pve-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/>
List-Post: <mailto:pve-devel@lists.proxmox.com>
List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

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.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'
-- 
2.39.5



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