public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Maximiliano Sandoval <m.sandoval@proxmox.com>
To: Maximiliano Sandoval <m.sandoval@proxmox.com>
Cc: pve-devel@lists.proxmox.com
Subject: Re: [pve-devel] [PATCH storage v2] fix #5181: pbs: store and read passwords as unicode
Date: Fri, 13 Jun 2025 15:11:59 +0200	[thread overview]
Message-ID: <s8o7c1faiq0.fsf@proxmox.com> (raw)
In-Reply-To: <20250613131125.354560-1-m.sandoval@proxmox.com>


Maximiliano Sandoval <m.sandoval@proxmox.com> writes:

> At the moment calling
> ```
> pvesm add pbs test --password="bär12345" --datastore='test' # ..other params
> ```
>
> Will result in the API handler getting the param->{passowrd} as a utf-8
> encoded string. When dumped with Debug::Peek's Dump() one can see:
>
> ```
> SV = PV(0x5a02c1a3ff10) at 0x5a02bd713670
>   REFCNT = 1
>   FLAGS = (POK,IsCOW,pPOK,UTF8)
>   PV = 0x5a02c1a409b0 "b\xC3\xA4r12345"\0 [UTF8 "b\x{e4}r12345"]
>   CUR = 9
>   LEN = 11
>   COW_REFCNT = 0
> ```
>
> Then when writing the file via file_set_contents (using syswrite
> internally) will result in perl encoding the password as latin1 and a
> file with contents:
>
> ```
> $ hexdump -C /etc/pve/priv/storage/test.pw
> 00000000  62 e4 72 31 32 33 34 35                           |b.r12345|
> 00000008
> ```
>
> when the correct contents should have been:
> ```
> 00000000  62 c3 a4 72 31 32 33 34  35                       |b..r12345|
> 00000009
> ```
>
> Later when the file is read via file_read_firstline it will result in
>
> ```
> SV = PV(0x5e8baa411090) at 0x5e8baa5a96b8
>   REFCNT = 1
>   FLAGS = (POK,pPOK)
>   PV = 0x5e8baa43ee20 "b\xE4r12345"\0
>   CUR = 8
>   LEN = 81
> ```
>
> which is a different string than the original.
>
> At the moment, adding the storage will work as the utf8 password is
> still in memory, however, however subsequent uses (e.g. pvestatd) will
> fail.
>
> This patch fixes the issue by encoding the string as utf8 both when
> reading and storing it to disk. The user was able in the past to go
> around the issue by writing the right password in
> /etc/pve/priv/{storage}.pw and this fix is compatible with that.
>
> It is documented at
> https://pbs.proxmox.com/docs/backup-client.html#environment-variables
> that the Backup Server password must be valid utf-8.
>
> Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>

Differences from v1:
 - Just the commit message


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

  reply	other threads:[~2025-06-13 13:12 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-13 13:11 Maximiliano Sandoval
2025-06-13 13:11 ` Maximiliano Sandoval [this message]
2025-07-23 13:00 ` Shannon Sterz
2025-07-29 16:10   ` Thomas Lamprecht
2025-07-30  7:25     ` [pve-devel] superseded: " Maximiliano Sandoval

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=s8o7c1faiq0.fsf@proxmox.com \
    --to=m.sandoval@proxmox.com \
    --cc=pve-devel@lists.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal