mirror of
https://github.com/s3fs-fuse/s3fs-fuse.git
synced 2024-12-23 09:18:55 +00:00
Fixed potential atomic violation in S3fsCurl::AddUserAgent - #633
This commit is contained in:
parent
5653ab39fc
commit
00bc9142c4
29
src/curl.cpp
29
src/curl.cpp
@ -363,6 +363,7 @@ curltime_t S3fsCurl::curl_times;
|
|||||||
curlprogress_t S3fsCurl::curl_progress;
|
curlprogress_t S3fsCurl::curl_progress;
|
||||||
string S3fsCurl::curl_ca_bundle;
|
string S3fsCurl::curl_ca_bundle;
|
||||||
mimes_t S3fsCurl::mimeTypes;
|
mimes_t S3fsCurl::mimeTypes;
|
||||||
|
string S3fsCurl::userAgent;
|
||||||
int S3fsCurl::max_parallel_cnt = 5; // default
|
int S3fsCurl::max_parallel_cnt = 5; // default
|
||||||
off_t S3fsCurl::multipart_size = MULTIPART_SIZE; // default
|
off_t S3fsCurl::multipart_size = MULTIPART_SIZE; // default
|
||||||
bool S3fsCurl::is_sigv4 = true; // default
|
bool S3fsCurl::is_sigv4 = true; // default
|
||||||
@ -614,6 +615,19 @@ bool S3fsCurl::InitMimeType(const char* MimeFile)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void S3fsCurl::InitUserAgent(void)
|
||||||
|
{
|
||||||
|
if(S3fsCurl::userAgent.empty()){
|
||||||
|
S3fsCurl::userAgent = "s3fs/";
|
||||||
|
S3fsCurl::userAgent += VERSION;
|
||||||
|
S3fsCurl::userAgent += " (commit hash ";
|
||||||
|
S3fsCurl::userAgent += COMMIT_HASH_VAL;
|
||||||
|
S3fsCurl::userAgent += "; ";
|
||||||
|
S3fsCurl::userAgent += s3fs_crypt_lib_name();
|
||||||
|
S3fsCurl::userAgent += ")";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// @param s e.g., "index.html"
|
// @param s e.g., "index.html"
|
||||||
// @return e.g., "text/html"
|
// @return e.g., "text/html"
|
||||||
@ -1480,20 +1494,7 @@ bool S3fsCurl::AddUserAgent(CURL* hCurl)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if(S3fsCurl::IsUserAgentFlag()){
|
if(S3fsCurl::IsUserAgentFlag()){
|
||||||
static string strua;
|
curl_easy_setopt(hCurl, CURLOPT_USERAGENT, S3fsCurl::userAgent.c_str());
|
||||||
static bool init = false;
|
|
||||||
|
|
||||||
if(!init){
|
|
||||||
strua = "s3fs/";
|
|
||||||
strua += VERSION;
|
|
||||||
strua += " (commit hash ";
|
|
||||||
strua += COMMIT_HASH_VAL;
|
|
||||||
strua += "; ";
|
|
||||||
strua += s3fs_crypt_lib_name();
|
|
||||||
strua += ")";
|
|
||||||
init = true;
|
|
||||||
}
|
|
||||||
curl_easy_setopt(hCurl, CURLOPT_USERAGENT, strua.c_str());
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -236,6 +236,7 @@ class S3fsCurl
|
|||||||
static curlprogress_t curl_progress;
|
static curlprogress_t curl_progress;
|
||||||
static std::string curl_ca_bundle;
|
static std::string curl_ca_bundle;
|
||||||
static mimes_t mimeTypes;
|
static mimes_t mimeTypes;
|
||||||
|
static std::string userAgent;
|
||||||
static int max_parallel_cnt;
|
static int max_parallel_cnt;
|
||||||
static off_t multipart_size;
|
static off_t multipart_size;
|
||||||
static bool is_sigv4;
|
static bool is_sigv4;
|
||||||
@ -377,6 +378,7 @@ class S3fsCurl
|
|||||||
static bool IsSignatureV4(void) { return S3fsCurl::is_sigv4; }
|
static bool IsSignatureV4(void) { return S3fsCurl::is_sigv4; }
|
||||||
static bool SetUserAgentFlag(bool isset) { bool bresult = S3fsCurl::is_ua; S3fsCurl::is_ua = isset; return bresult; }
|
static bool SetUserAgentFlag(bool isset) { bool bresult = S3fsCurl::is_ua; S3fsCurl::is_ua = isset; return bresult; }
|
||||||
static bool IsUserAgentFlag(void) { return S3fsCurl::is_ua; }
|
static bool IsUserAgentFlag(void) { return S3fsCurl::is_ua; }
|
||||||
|
static void InitUserAgent(void);
|
||||||
|
|
||||||
// methods
|
// methods
|
||||||
bool CreateCurlHandle(bool force = false);
|
bool CreateCurlHandle(bool force = false);
|
||||||
|
@ -4935,6 +4935,9 @@ int main(int argc, char* argv[])
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set user agent
|
||||||
|
S3fsCurl::InitUserAgent();
|
||||||
|
|
||||||
// There's room for more command line error checking
|
// There's room for more command line error checking
|
||||||
|
|
||||||
// Check to see if the bucket name contains periods and https (SSL) is
|
// Check to see if the bucket name contains periods and https (SSL) is
|
||||||
|
Loading…
Reference in New Issue
Block a user