From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id 0EEA61FF0E4 for ; Tue, 14 Jul 2026 13:21:54 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id D534921405; Tue, 14 Jul 2026 13:21:53 +0200 (CEST) Message-ID: Date: Tue, 14 Jul 2026 13:21:49 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta Subject: Re: [PATCH pve-storage 04/13] api: plugins/storage/plugin: mark sensitive properties in schema To: "Max R. Carrara" , pve-devel@lists.proxmox.com References: <20260623143402.772452-1-m.carrara@proxmox.com> <20260623143402.772452-5-m.carrara@proxmox.com> Content-Language: en-US From: Jakob Klocker In-Reply-To: <20260623143402.772452-5-m.carrara@proxmox.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1784028093728 X-SPAM-LEVEL: Spam detection results: 0 AWL 1.156 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_LOW -0.7 Sender listed at https://www.dnswl.org/, low trust 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: JQOXBXA4NQOXSORWUBUWRILXN4NC6NWW X-Message-ID-Hash: JQOXBXA4NQOXSORWUBUWRILXN4NC6NWW X-MailFrom: j.klocker@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: comment inline On 6/23/26 4:35 PM, Max R. Carrara wrote: > Signed-off-by: Max R. Carrara > --- > src/PVE/API2/Plugins/Storage/Plugin.pm | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/src/PVE/API2/Plugins/Storage/Plugin.pm b/src/PVE/API2/Plugins/Storage/Plugin.pm > index 573d3e4d..757ae1e8 100644 > --- a/src/PVE/API2/Plugins/Storage/Plugin.pm > +++ b/src/PVE/API2/Plugins/Storage/Plugin.pm > @@ -42,6 +42,7 @@ my sub get_schema_for_plugin : prototype($) ($plugin) { > return $PLUGIN_SCHEMAS->{$type} if defined($PLUGIN_SCHEMAS->{$type}); > > my $options = $plugin->options(); > + my $plugindata = $plugin->plugindata(); > > my $schema = {}; > $PLUGIN_SCHEMAS->{$type} = $schema; > @@ -52,6 +53,8 @@ my sub get_schema_for_plugin : prototype($) ($plugin) { > > # shallow copy > my $property = { $prop_schema->%* }; > + $property->{sensitive} = defined($plugindata->{'sensitive-properties'}->{$option}) || 0; When looking at the schema, you'll notice that the `sensitive` property is a string (`"1"`) when enabled, but an integer (`0`) when disabled. The logic still works since since JS treats both as truthy, but IMO it should be the same type in both cases. I've tested following change which fixed this issue: $property->{sensitive} = defined($plugindata->{'sensitive-properties'}->{$option}) ? 1 : 0; > + > $schema->{$option} = $property; > > for my $opt_key (keys $options->{$option}->%*) {