Skip to content

Commit 5e413f3

Browse files
committed
Fixed url escaping in s3 applicator actor
1 parent 0e77ef0 commit 5e413f3

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

ydb/library/yql/providers/s3/actors/yql_s3_applicator_actor.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,17 @@ struct TCompleteMultipartUpload {
4040

4141
TString RequestId;
4242
TString Url;
43+
TString UrlEscaped;
4344
TString UploadId;
4445
TString Token;
4546
std::vector<TString> Tags;
4647

4748
TCompleteMultipartUpload(const TString& requestId, const TString& url, const TString& uploadId, const TString& token)
48-
: RequestId(requestId), Url(url), UploadId(uploadId), Token(token) {
49+
: RequestId(requestId), Url(url), UrlEscaped(NS3Util::UrlEscapeRet(url)), UploadId(uploadId), Token(token) {
4950
}
5051

5152
TString BuildUrl() const {
52-
TUrlBuilder urlBuilder(Url);
53+
TUrlBuilder urlBuilder(UrlEscaped);
5354
urlBuilder.AddUrlParam("uploadId", UploadId);
5455
return urlBuilder.Build();
5556
}
@@ -72,22 +73,23 @@ struct TListMultipartUploads {
7273

7374
TString RequestId;
7475
TString Url;
76+
TString UrlEscaped;
7577
TString Prefix;
7678
TString Token;
7779
TString KeyMarker;
7880
TString UploadIdMarker;
7981

8082
TListMultipartUploads(const TString& requestId, const TString& url, const TString& prefix, const TString& token,
8183
const TString& keyMarker = "", const TString& uploadIdMarker = "")
82-
: RequestId(requestId), Url(url), Prefix(prefix), Token(token), KeyMarker(keyMarker), UploadIdMarker(uploadIdMarker) {
84+
: RequestId(requestId), Url(url), UrlEscaped(NS3Util::UrlEscapeRet(url)), Prefix(prefix), Token(token), KeyMarker(keyMarker), UploadIdMarker(uploadIdMarker) {
8385
}
8486

8587
TString BuildUrl() const {
8688
// We have to sort the cgi parameters for the correct aws signature
8789
// This requirement will be fixed in the curl library
8890
// https://github.com/curl/curl/commit/fc76a24c53b08cdf6eec8ba787d8eac64651d56e
8991
// https://github.com/curl/curl/commit/c87920353883ef9d5aa952e724a8e2589d76add5
90-
TUrlBuilder urlBuilder(Url);
92+
TUrlBuilder urlBuilder(UrlEscaped);
9193
if (KeyMarker) {
9294
urlBuilder.AddUrlParam("key-marker", KeyMarker);
9395
}
@@ -106,15 +108,16 @@ struct TAbortMultipartUpload {
106108

107109
TString RequestId;
108110
TString Url;
111+
TString UrlEscaped;
109112
TString UploadId;
110113
TString Token;
111114

112115
TAbortMultipartUpload(const TString& requestId, const TString& url, const TString& uploadId, const TString& token)
113-
: RequestId(requestId), Url(url), UploadId(uploadId), Token(token) {
116+
: RequestId(requestId), Url(url), UrlEscaped(NS3Util::UrlEscapeRet(url)), UploadId(uploadId), Token(token) {
114117
}
115118

116119
TString BuildUrl() const {
117-
TUrlBuilder urlBuilder(Url);
120+
TUrlBuilder urlBuilder(UrlEscaped);
118121
urlBuilder.AddUrlParam("uploadId", UploadId);
119122
return urlBuilder.Build();
120123
}
@@ -126,22 +129,23 @@ struct TListParts {
126129

127130
TString RequestId;
128131
TString Url;
132+
TString UrlEscaped;
129133
TString UploadId;
130134
TString Token;
131135
TString PartNumberMarker;
132136
TCompleteMultipartUpload::TPtr CompleteState;
133137

134138
TListParts(const TString& requestId, const TString& url, const TString& uploadId, const TString& token,
135139
TCompleteMultipartUpload::TPtr completeState)
136-
: RequestId(requestId), Url(url), UploadId(uploadId), Token(token), CompleteState(completeState) {
140+
: RequestId(requestId), Url(url), UrlEscaped(NS3Util::UrlEscapeRet(url)), UploadId(uploadId), Token(token), CompleteState(completeState) {
137141
}
138142

139143
TString BuildUrl() const {
140144
// We have to sort the cgi parameters for the correct aws signature
141145
// This requirement will be fixed in the curl library
142146
// https://github.com/curl/curl/commit/fc76a24c53b08cdf6eec8ba787d8eac64651d56e
143147
// https://github.com/curl/curl/commit/c87920353883ef9d5aa952e724a8e2589d76add5
144-
TUrlBuilder urlBuilder(Url);
148+
TUrlBuilder urlBuilder(UrlEscaped);
145149
if (PartNumberMarker) {
146150
urlBuilder.AddUrlParam("part-number-marker", PartNumberMarker);
147151
}
@@ -682,4 +686,4 @@ THolder<NActors::IActor> MakeS3ApplicatorActor(
682686
);
683687
}
684688

685-
} // namespace NYql::NDq
689+
} // namespace NYql::NDq

0 commit comments

Comments
 (0)