Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sdroege/gst-plugin-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Raghavan <arun@asymptotic.io>2023-09-21 21:21:16 +0300
committerArun Raghavan <arun@asymptotic.io>2023-10-24 19:52:12 +0300
commitbb26e04a55e2ef139656adf35f24bf0a43404f93 (patch)
tree5374d76d68d118d3a60ba4d52dbb4fceabb5042f
parent51129febeb105b46f1cf8da6c57e4b4837743614 (diff)
aws: s3: Properly percent-decode GstS3Url
We previously only percent-decoded the first fragment. This doesn't necessarily harm anything, but for consistency we keep the structure un-encoded, and encode when converting to a string representation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1333>
-rw-r--r--net/aws/src/s3url.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/net/aws/src/s3url.rs b/net/aws/src/s3url.rs
index 8d174d13..7a9d031f 100644
--- a/net/aws/src/s3url.rs
+++ b/net/aws/src/s3url.rs
@@ -83,15 +83,21 @@ pub fn parse_s3_url(url_str: &str) -> Result<GstS3Url, String> {
.next()
.ok_or_else(|| format!("Invalid empty object/bucket '{url}'"))?;
+ if o.is_empty() {
+ return Err(format!("Invalid empty object/bucket '{url}'"));
+ }
+
let mut object = percent_decode(o.as_bytes())
.decode_utf8()
.unwrap()
.to_string();
- if o.is_empty() {
- return Err(format!("Invalid empty object/bucket '{url}'"));
- }
- object = path.fold(object, |o, p| format!("{o}/{p}"));
+ object = path.fold(object, |o, p| {
+ format!(
+ "{o}/{}",
+ percent_decode(p.as_bytes()).decode_utf8().unwrap()
+ )
+ });
let mut q = url.query_pairs();
let v = q.next();