Skip to content

Commit

Permalink
Issue #1060: Fix double-appending of "/" to empty paths in AwsRequest…
Browse files Browse the repository at this point in the history
…Signing.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
  • Loading branch information
yufei-cai committed May 26, 2021
1 parent c99fa0a commit 2dc9cda
Showing 1 changed file with 8 additions and 3 deletions.
Expand Up @@ -221,13 +221,18 @@ private static String getPathStringOrSlashWhenEmpty(final Uri uri) {

static String encodeAndNormalizePathSegments(final Uri uri) {
final String slash = "/";
final String trailingSeparator = uri.getPathString().endsWith(slash) ? slash : "";
return StreamSupport.stream(uri.pathSegments().spliterator(), false)
final List<String> segments = StreamSupport.stream(uri.pathSegments().spliterator(), false)
.filter(s -> !s.isEmpty())
// encode path segment twice as required for all AWS services except S3
.map(UriEncoding::encodePathSegment)
.map(UriEncoding::encodePathSegment)
.collect(Collectors.joining(slash, slash, trailingSeparator));
.collect(Collectors.toList());

if (segments.isEmpty()) {
return "/";
} else {
return segments.stream().collect(Collectors.joining(slash, slash, slash));
}
}

static byte[] getKSecret(final String secretKey) {
Expand Down

0 comments on commit 2dc9cda

Please sign in to comment.