From: Thomas Lamprecht <t.lamprecht@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
Stoiko Ivanov <s.ivanov@proxmox.com>
Subject: Re: [pve-devel] [PATCH storage] cifs: fix adding storage without username in the GUI
Date: Tue, 6 Jul 2021 07:45:36 +0200 [thread overview]
Message-ID: <6e61cf61-8c16-0ac1-0b5e-7191202d3e37@proxmox.com> (raw)
In-Reply-To: <20210705185150.889830-1-s.ivanov@proxmox.com>
On 05.07.21 20:51, Stoiko Ivanov wrote:
> Currently when trying to add a CIFS storage, without providing a
> username and passwort it fails while trying to mount the share, due to
> the provided 'username=' parameter (w/o actual username).
>
> I think the issue was introduced in
> 72385de9e23df9f8e438d74ff783a8075f8d1560
> with the extracting of sensitive parameters we (rightly) switched to a
> definedness check instead of one for truthyness - but an empty
> username/password is defined.
so it either did not switch "rightly" over or you switched it right back by mistake..
>
> Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
> ---
> PVE/Storage/CIFSPlugin.pm | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/PVE/Storage/CIFSPlugin.pm b/PVE/Storage/CIFSPlugin.pm
> index 9d69b01..f8e173d 100644
> --- a/PVE/Storage/CIFSPlugin.pm
> +++ b/PVE/Storage/CIFSPlugin.pm
> @@ -157,7 +157,7 @@ sub check_config {
> sub on_add_hook {
> my ($class, $storeid, $scfg, %param) = @_;
>
> - if (defined($param{password})) {
> + if (defined($param{password}) && $param{password}) {
defined && truthiness check of the same variable is effectively just the truthiness
check, as there can never be the case where `$param{password}` would evaluate to true
but `defined($param{password}) would not.
So this makes it again wrong, as it also skips values like "0".
If, you'd need to check the length($param{password}) == 0, but I do not really see
the point here, that would be normally the job of the API and a result should be
a parameter exception.
> cifs_set_credentials($param{password}, $storeid);
> if (!exists($scfg->{username})) {
> warn "ignoring password parameter\n";
> @@ -174,7 +174,7 @@ sub on_update_hook {
>
> return if !exists($param{password});
>
> - if (defined($param{password})) {
> + if (defined($param{password}) && $param{password}) {
same here, you effectively transformed it back to `if ($param{password}) {`
> cifs_set_credentials($param{password}, $storeid);
> if (!exists($scfg->{username})) {
> warn "ignoring password parameter\n";
>
The backend wasn't really the problem here, the front end sent empty strings
when it should not, so I replaced your patch with the following in manage:
----8<----
diff --git a/www/manager6/storage/CIFSEdit.js b/www/manager6/storage/CIFSEdit.js
index 3992c477..71415401 100644
--- a/www/manager6/storage/CIFSEdit.js
+++ b/www/manager6/storage/CIFSEdit.js
@@ -120,6 +120,19 @@ Ext.define('PVE.storage.CIFSInputPanel', {
onlineHelp: 'storage_cifs',
+ onGetValues: function(values) {
+ let me = this;
+
+ if (values.password?.length === 0) {
+ delete values.password;
+ }
+ if (values.username?.length === 0) {
+ delete values.username;
+ }
+
+ return me.callParent([values]);
+ },
+
initComponent: function() {
var me = this;
prev parent reply other threads:[~2021-07-06 5:46 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-05 18:51 Stoiko Ivanov
2021-07-06 5:45 ` Thomas Lamprecht [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6e61cf61-8c16-0ac1-0b5e-7191202d3e37@proxmox.com \
--to=t.lamprecht@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
--cc=s.ivanov@proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.