Hi, Please find the latest report on new defect(s) introduced to LibreOffice found with Coverity Scan.
1 new defect(s) introduced to LibreOffice found with Coverity Scan. New defect(s) Reported-by: Coverity Scan Showing 1 of 1 defect(s) ** CID 1515996: (CHECKED_RETURN) /linguistic/source/translate.cxx: 19 in linguistic::Translate(const rtl::OString &, const rtl::OString &, const rtl::OString &, const rtl::OString &)() /linguistic/source/translate.cxx: 24 in linguistic::Translate(const rtl::OString &, const rtl::OString &, const rtl::OString &, const rtl::OString &)() /linguistic/source/translate.cxx: 33 in linguistic::Translate(const rtl::OString &, const rtl::OString &, const rtl::OString &, const rtl::OString &)() /linguistic/source/translate.cxx: 39 in linguistic::Translate(const rtl::OString &, const rtl::OString &, const rtl::OString &, const rtl::OString &)() /linguistic/source/translate.cxx: 21 in linguistic::Translate(const rtl::OString &, const rtl::OString &, const rtl::OString &, const rtl::OString &)() /linguistic/source/translate.cxx: 20 in linguistic::Translate(const rtl::OString &, const rtl::OString &, const rtl::OString &, const rtl::OString &)() ________________________________________________________________________________________________________ *** CID 1515996: (CHECKED_RETURN) /linguistic/source/translate.cxx: 19 in linguistic::Translate(const rtl::OString &, const rtl::OString &, const rtl::OString &, const rtl::OString &)() 13 const OString& rData) 14 { 15 constexpr tools::Long CURL_TIMEOUT = 10L; 16 17 std::unique_ptr<CURL, std::function<void(CURL*)>> curl(curl_easy_init(), 18 [](CURL* p) { curl_easy_cleanup(p); }); >>> CID 1515996: (CHECKED_RETURN) >>> Calling "curl_easy_setopt(curl.get(), CURLOPT_URL, rAPIUrl->getStr())" >>> without checking return value. This library function may fail and return an >>> error code. 19 curl_easy_setopt(curl.get(), CURLOPT_URL, rAPIUrl.getStr()); 20 curl_easy_setopt(curl.get(), CURLOPT_FAILONERROR, 1L); 21 curl_easy_setopt(curl.get(), CURLOPT_TIMEOUT, CURL_TIMEOUT); 22 23 std::string response_body; 24 curl_easy_setopt(curl.get(), CURLOPT_WRITEFUNCTION, /linguistic/source/translate.cxx: 24 in linguistic::Translate(const rtl::OString &, const rtl::OString &, const rtl::OString &, const rtl::OString &)() 18 [](CURL* p) { curl_easy_cleanup(p); }); 19 curl_easy_setopt(curl.get(), CURLOPT_URL, rAPIUrl.getStr()); 20 curl_easy_setopt(curl.get(), CURLOPT_FAILONERROR, 1L); 21 curl_easy_setopt(curl.get(), CURLOPT_TIMEOUT, CURL_TIMEOUT); 22 23 std::string response_body; >>> CID 1515996: (CHECKED_RETURN) >>> Calling "curl_easy_setopt(curl.get(), CURLOPT_WRITEFUNCTION, >>> +linguistic::Translate(rtl::OString const &, rtl::OString const &, >>> rtl::OString const &, rtl::OString const &)::[lambda(void *, unsigned long, >>> unsigned long, void *) (instance 1)]().operator size_t (*)(void *, size_t, >>> size_t, void *)())" without checking return value. This library function >>> may fail and return an error code. 24 curl_easy_setopt(curl.get(), CURLOPT_WRITEFUNCTION, 25 +[](void* buffer, size_t size, size_t nmemb, void* userp) -> size_t { 26 if (!userp) 27 return 0; 28 std::string* response = static_cast<std::string*>(userp); 29 size_t real_size = size * nmemb; /linguistic/source/translate.cxx: 33 in linguistic::Translate(const rtl::OString &, const rtl::OString &, const rtl::OString &, const rtl::OString &)() 27 return 0; 28 std::string* response = static_cast<std::string*>(userp); 29 size_t real_size = size * nmemb; 30 response->append(static_cast<char*>(buffer), real_size); 31 return real_size; 32 }); >>> CID 1515996: (CHECKED_RETURN) >>> Calling "curl_easy_setopt(curl.get(), CURLOPT_WRITEDATA, >>> static_cast<void *>(&response_body))" without checking return value. This >>> library function may fail and return an error code. 33 curl_easy_setopt(curl.get(), CURLOPT_WRITEDATA, static_cast<void*>(&response_body)); 34 OString aLang(curl_easy_escape(curl.get(), rTargetLang.getStr(), rTargetLang.getLength())); 35 OString aAuthKey(curl_easy_escape(curl.get(), rAuthKey.getStr(), rAuthKey.getLength())); 36 OString aData(curl_easy_escape(curl.get(), rData.getStr(), rData.getLength())); 37 OString aPostData("auth_key=" + aAuthKey + "&target_lang=" + aLang + "&text=" + aData); 38 /linguistic/source/translate.cxx: 39 in linguistic::Translate(const rtl::OString &, const rtl::OString &, const rtl::OString &, const rtl::OString &)() 33 curl_easy_setopt(curl.get(), CURLOPT_WRITEDATA, static_cast<void*>(&response_body)); 34 OString aLang(curl_easy_escape(curl.get(), rTargetLang.getStr(), rTargetLang.getLength())); 35 OString aAuthKey(curl_easy_escape(curl.get(), rAuthKey.getStr(), rAuthKey.getLength())); 36 OString aData(curl_easy_escape(curl.get(), rData.getStr(), rData.getLength())); 37 OString aPostData("auth_key=" + aAuthKey + "&target_lang=" + aLang + "&text=" + aData); 38 >>> CID 1515996: (CHECKED_RETURN) >>> Calling "curl_easy_setopt(curl.get(), CURLOPT_POSTFIELDS, >>> aPostData.getStr())" without checking return value. This library function >>> may fail and return an error code. 39 curl_easy_setopt(curl.get(), CURLOPT_POSTFIELDS, aPostData.getStr()); 40 CURLcode cc = curl_easy_perform(curl.get()); 41 if (cc != CURLE_OK) 42 { 43 SAL_WARN("linguistic", 44 "Translate: CURL perform returned with error: " << static_cast<sal_Int32>(cc)); /linguistic/source/translate.cxx: 21 in linguistic::Translate(const rtl::OString &, const rtl::OString &, const rtl::OString &, const rtl::OString &)() 15 constexpr tools::Long CURL_TIMEOUT = 10L; 16 17 std::unique_ptr<CURL, std::function<void(CURL*)>> curl(curl_easy_init(), 18 [](CURL* p) { curl_easy_cleanup(p); }); 19 curl_easy_setopt(curl.get(), CURLOPT_URL, rAPIUrl.getStr()); 20 curl_easy_setopt(curl.get(), CURLOPT_FAILONERROR, 1L); >>> CID 1515996: (CHECKED_RETURN) >>> Calling "curl_easy_setopt(curl.get(), CURLOPT_TIMEOUT, 10L)" without >>> checking return value. This library function may fail and return an error >>> code. 21 curl_easy_setopt(curl.get(), CURLOPT_TIMEOUT, CURL_TIMEOUT); 22 23 std::string response_body; 24 curl_easy_setopt(curl.get(), CURLOPT_WRITEFUNCTION, 25 +[](void* buffer, size_t size, size_t nmemb, void* userp) -> size_t { 26 if (!userp) /linguistic/source/translate.cxx: 20 in linguistic::Translate(const rtl::OString &, const rtl::OString &, const rtl::OString &, const rtl::OString &)() 14 { 15 constexpr tools::Long CURL_TIMEOUT = 10L; 16 17 std::unique_ptr<CURL, std::function<void(CURL*)>> curl(curl_easy_init(), 18 [](CURL* p) { curl_easy_cleanup(p); }); 19 curl_easy_setopt(curl.get(), CURLOPT_URL, rAPIUrl.getStr()); >>> CID 1515996: (CHECKED_RETURN) >>> Calling "curl_easy_setopt(curl.get(), CURLOPT_FAILONERROR, 1L)" without >>> checking return value. This library function may fail and return an error >>> code. 20 curl_easy_setopt(curl.get(), CURLOPT_FAILONERROR, 1L); 21 curl_easy_setopt(curl.get(), CURLOPT_TIMEOUT, CURL_TIMEOUT); 22 23 std::string response_body; 24 curl_easy_setopt(curl.get(), CURLOPT_WRITEFUNCTION, 25 +[](void* buffer, size_t size, size_t nmemb, void* userp) -> size_t { ________________________________________________________________________________________________________ To view the defects in Coverity Scan visit, https://u15810271.ct.sendgrid.net/ls/click?upn=HRESupC-2F2Czv4BOaCWWCy7my0P0qcxCbhZ31OYv50ypSs1kiFPuCn2xFdlMIFBirii0zZ9j2-2F9F2XPBcBm2BNgi9duPy3v-2FzgFDd2LJ-2BDKI-3DGiv8_OTq2XUZbbipYjyLSo6GRo-2FpVxQ9OzkDINu9UTS-2FQhSdO0F0jQniitrGlNxDIzPJiE3abuAxLOjq564Ht7O1XHUJaW1GJ48vF2E5tTJwrJk8GYeLSlMfaFHX-2FCv5UsO2C7TzdROD3JShLyWCBh0qOLGmrzahvlKjiUDGAfcWg2DYFirlkWV6jaxys659MmObiTZDYTy-2BJWfPZSdH6wQCUsayUgLYN0tzNOKXOF0wy6LU-3D