Merge pull request #329 from andrewgaul/v4-signature-get

Correct multiple issues with GET and v4 signing
This commit is contained in:
Takeshi Nakatani 2016-01-17 14:46:19 +09:00
commit 7410b7525f

View File

@ -1960,16 +1960,17 @@ string S3fsCurl::CalcSignature(const string& method, const string& canonical_uri
uriencode = urlEncode(canonical_uri); uriencode = urlEncode(canonical_uri);
StringCQ = method + "\n"; StringCQ = method + "\n";
if(0 == strcmp(method.c_str(),"HEAD") || 0 == strcmp(method.c_str(),"PUT") || 0 == strcmp(method.c_str(),"DELETE")){ if(0 == strcmp(method.c_str(),"HEAD") || 0 == strcmp(method.c_str(),"PUT") || 0 == strcmp(method.c_str(),"DELETE")){
StringCQ += uriencode + "\n" + query_string + "\n"; StringCQ += uriencode + "\n";
}else if (0 == strcmp(method.c_str(), "GET") && 0 == strcmp(uriencode.c_str(), "")) { }else if (0 == strcmp(method.c_str(), "GET") && 0 == strcmp(uriencode.c_str(), "")) {
StringCQ +="/\n\n"; StringCQ +="/\n";
}else if (0 == strcmp(method.c_str(), "GET") && 0 == strncmp(uriencode.c_str(), "/", 1)) { }else if (0 == strcmp(method.c_str(), "GET") && 0 == strncmp(uriencode.c_str(), "/", 1)) {
StringCQ += uriencode +"\n\n"; StringCQ += uriencode +"\n";
}else if (0 == strcmp(method.c_str(), "GET") && 0 != strncmp(uriencode.c_str(), "/", 1)) { }else if (0 == strcmp(method.c_str(), "GET") && 0 != strncmp(uriencode.c_str(), "/", 1)) {
StringCQ += "/\n" + urlEncode2(canonical_uri) +"\n"; StringCQ += "/\n" + urlEncode2(canonical_uri) +"\n";
}else if (0 == strcmp(method.c_str(), "POST")) { }else if (0 == strcmp(method.c_str(), "POST")) {
StringCQ += uriencode +"\n" + query_string +"\n"; StringCQ += uriencode + "\n";
} }
StringCQ += urlEncode2(query_string) + "\n";
StringCQ += get_canonical_headers(requestHeaders) + "\n"; StringCQ += get_canonical_headers(requestHeaders) + "\n";
StringCQ += get_sorted_header_keys(requestHeaders) + "\n"; StringCQ += get_sorted_header_keys(requestHeaders) + "\n";
StringCQ += payload_hash; StringCQ += payload_hash;
@ -2723,7 +2724,7 @@ int S3fsCurl::ListBucketRequest(const char* tpath, const char* query)
} }
}else{ }else{
insertV4Headers("GET", query, "", ""); insertV4Headers("GET", "/", query, "");
} }
// setopt // setopt