[pbs-devel] [PATCH proxmox] s3-client: properly uri encode request query parameters

Christian Ebner c.ebner at proxmox.com
Thu Aug 21 14:04:35 CEST 2025


Slashes in object keys as part of the url must not be uri encoded.
They should however be for the query parameters.

Fix this by correctly setting the flag signaling the
aws_sign_v4_uri_encode helper that this is not to be encoded as
object key.

Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
---
Noticed in the ceph RGW debug log output while checking an unrelated
issue.

 proxmox-s3-client/src/client.rs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/proxmox-s3-client/src/client.rs b/proxmox-s3-client/src/client.rs
index 3bc2a672..7a3fb89a 100644
--- a/proxmox-s3-client/src/client.rs
+++ b/proxmox-s3-client/src/client.rs
@@ -698,10 +698,10 @@ impl S3Client {
             // No further input validation as http::uri::Builder will check path and query
             let mut query_iter = query.iter().peekable();
             while let Some((key, value)) = query_iter.next() {
-                let key = aws_sign_v4_uri_encode(key, true);
+                let key = aws_sign_v4_uri_encode(key, false);
                 path_and_query.push_str(&key);
                 if !value.is_empty() {
-                    let value = aws_sign_v4_uri_encode(value, true);
+                    let value = aws_sign_v4_uri_encode(value, false);
                     path_and_query.push('=');
                     path_and_query.push_str(&value);
                 }
-- 
2.47.2





More information about the pbs-devel mailing list