aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex <alex@adnab.me>2021-04-27 23:15:01 +0200
committerAlex <alex@adnab.me>2021-04-27 23:15:01 +0200
commit368eb354846790e9fc616d9a26ddc414748d847f (patch)
tree0fa02a60730f479cbaa87fbd5065d332546449e4
parent119217f9f6f904efda33d80f744404c6935ed827 (diff)
parent642186c53051b9edf8a23073a7fd17d7d7e2b819 (diff)
downloadgarage-368eb354846790e9fc616d9a26ddc414748d847f.tar.gz
garage-368eb354846790e9fc616d9a26ddc414748d847f.zip
Merge pull request 'Correctly encode ampersand' (#61) from bug/ampersand into main
Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/61
-rwxr-xr-xscript/test-smoke.sh40
-rw-r--r--src/api/encoding.rs3
2 files changed, 25 insertions, 18 deletions
diff --git a/script/test-smoke.sh b/script/test-smoke.sh
index a2ffcea1..16ab3807 100755
--- a/script/test-smoke.sh
+++ b/script/test-smoke.sh
@@ -3,6 +3,8 @@
set -ex
shopt -s expand_aliases
+export LC_ALL=C.UTF-8
+export LANG=C.UTF-8
SCRIPT_FOLDER="`dirname \"$0\"`"
REPO_FOLDER="${SCRIPT_FOLDER}/../"
@@ -19,41 +21,45 @@ garage status
garage key list
garage bucket list
-dd if=/dev/urandom of=/tmp/garage.1.rnd bs=1k count=2 # < INLINE_THRESHOLD = 3072 bytes
-dd if=/dev/urandom of=/tmp/garage.2.rnd bs=1M count=5
-dd if=/dev/urandom of=/tmp/garage.3.rnd bs=1M count=10
+dd if=/dev/urandom of=/tmp/garage.1.rnd bs=1k count=2 # No multipart, inline storage (< INLINE_THRESHOLD = 3072 bytes)
+dd if=/dev/urandom of=/tmp/garage.2.rnd bs=1M count=5 # No multipart but file will be chunked
+dd if=/dev/urandom of=/tmp/garage.3.rnd bs=1M count=10 # by default, AWS starts using multipart at 8MB
echo "s3 api testing..."
+awsgrg --version
+s3cmd --version
+python3 --version
+
for idx in $(seq 1 3); do
- # AWS sends
- awsgrg cp /tmp/garage.$idx.rnd s3://eprouvette/garage.$idx.aws
-
+ # AWS sends
+ awsgrg cp "/tmp/garage.$idx.rnd" "s3://eprouvette/&+-é\"/garage.$idx.aws"
+
awsgrg ls s3://eprouvette
-
- awsgrg cp s3://eprouvette/garage.$idx.aws /tmp/garage.$idx.dl
+
+ awsgrg cp "s3://eprouvette/&+-é\"/garage.$idx.aws" "/tmp/garage.$idx.dl"
diff /tmp/garage.$idx.rnd /tmp/garage.$idx.dl
rm /tmp/garage.$idx.dl
-
- s3grg get s3://eprouvette/garage.$idx.aws /tmp/garage.$idx.dl
+
+ s3grg get "s3://eprouvette/&+-é\"/garage.$idx.aws" "/tmp/garage.$idx.dl"
diff /tmp/garage.$idx.rnd /tmp/garage.$idx.dl
rm /tmp/garage.$idx.dl
-
- awsgrg rm s3://eprouvette/garage.$idx.aws
+
+ awsgrg rm "s3://eprouvette/&+-é\"/garage.$idx.aws"
# S3CMD sends
- s3grg put /tmp/garage.$idx.rnd s3://eprouvette/garage.$idx.s3cmd
+ s3grg put "/tmp/garage.$idx.rnd" "s3://eprouvette/&+-é\"/garage.$idx.s3cmd"
s3grg ls s3://eprouvette
- s3grg get s3://eprouvette/garage.$idx.s3cmd /tmp/garage.$idx.dl
+ s3grg get "s3://eprouvette/&+-é\"/garage.$idx.s3cmd" "/tmp/garage.$idx.dl"
diff /tmp/garage.$idx.rnd /tmp/garage.$idx.dl
rm /tmp/garage.$idx.dl
-
- awsgrg cp s3://eprouvette/garage.$idx.s3cmd /tmp/garage.$idx.dl
+
+ awsgrg cp "s3://eprouvette/&+-é\"/garage.$idx.s3cmd" "/tmp/garage.$idx.dl"
diff /tmp/garage.$idx.rnd /tmp/garage.$idx.dl
rm /tmp/garage.$idx.dl
- s3grg rm s3://eprouvette/garage.$idx.s3cmd
+ s3grg rm "s3://eprouvette/&+-é\"/garage.$idx.s3cmd"
done
rm /tmp/garage.{1,2,3}.rnd
diff --git a/src/api/encoding.rs b/src/api/encoding.rs
index 63c5dee2..b3fbbe34 100644
--- a/src/api/encoding.rs
+++ b/src/api/encoding.rs
@@ -2,7 +2,8 @@
/// Escape &str for xml inclusion
pub fn xml_escape(s: &str) -> String {
- s.replace("<", "&lt;")
+ s.replace("&", "&amp;")
+ .replace("<", "&lt;")
.replace(">", "&gt;")
.replace("\"", "&quot;")
}