From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 90B9B1FF13F for ; Thu, 07 May 2026 14:40:59 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 9B6E91846F; Thu, 7 May 2026 14:40:40 +0200 (CEST) From: Stefan Hanreich To: pve-devel@lists.proxmox.com Subject: [PATCH pve-manager v4 21/31] ui: fix parsing of property-strings when values contain = Date: Thu, 7 May 2026 14:39:56 +0200 Message-ID: <20260507124008.417223-22-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260507124008.417223-1-s.hanreich@proxmox.com> References: <20260507124008.417223-1-s.hanreich@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1778157510058 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.641 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 Message-ID-Hash: F3AU3HRTI5BZZBKVMCCVFBZMQ2K3K447 X-Message-ID-Hash: F3AU3HRTI5BZZBKVMCCVFBZMQ2K3K447 X-MailFrom: s.hanreich@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: The old parsing logic utilized split with the limit parameter for parsing key=value pairs in a property string. String.splt() doesn't stop at splitting after `limit` occurences of the specified separator, but rather splits the whole string and then only returns the first 'limit' parts from the result. This leads to issues with values that contain an equals sign, since the returned value only includes the string up until the first occurence of an equals sign. This is particularly problematic when the value is a base64 string, which are commonly padded by utilizing an equals sign. Use indexOf instead to find the first occurence of an equals sign, and then split the property into key and value at only that index. This allows for equals signs in values (but not keys). Signed-off-by: Stefan Hanreich --- www/manager6/Parser.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/www/manager6/Parser.js b/www/manager6/Parser.js index 5e7e87df6..4676a7eca 100644 --- a/www/manager6/Parser.js +++ b/www/manager6/Parser.js @@ -54,7 +54,12 @@ Ext.define('PVE.Parser', { try { value.split(',').forEach((property) => { - let [k, v] = property.split('=', 2); + let idx = property.indexOf('='); + let [k, v] = + idx === -1 + ? [property, null] + : [property.substring(0, idx), property.substring(idx + 1)]; + if (Ext.isDefined(v)) { res[k] = v; } else if (Ext.isDefined(defaultKey)) { -- 2.47.3