Rule: Weak SSL/TLS protocols should not be used [c:S4423]
Product: SonarQube Cloud
Lang: C/C++/Objective-C
Source code:
request->rawHandle = curl_easy_init();
request->complete_clb = complete;
request->progress_clb = progress;
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_USERAGENT, va("%s %s", APP_NAME "/" APP_VERSION, curl_version()));
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_REFERER, referer);
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_URL, remoteName);
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
// Use stronger SSL and TLS versions
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_WRITEFUNCTION, DL_cb_FWriteFile);
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_WRITEDATA, (void *)request);
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_XFERINFOFUNCTION, DL_cb_Progress);
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_PROGRESSDATA, (void *)request);
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_NOPROGRESS, 0);
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_FAILONERROR, 1);
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_FOLLOWLOCATION, 1);
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_MAXREDIRS, 5);
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_FORBID_REUSE, 1L);
Full source code:
Why do you believe it’s a false-positive/false-negative?
Current description how to fix it:
curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
Source code:
ETL_curl_easy_setopt(status, request->rawHandle, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);