diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-12-16 15:09:55 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-12-16 15:09:55 +0100 |
| commit | 707f64b85c8a1b88923617ff72bd8a4ca562f3bd (patch) | |
| tree | 19543e9df7d87a2204e944a332158137805e9a92 /lib/Plugins | |
| parent | 1eae9a2bcc8583bf54ec7027ead9b0ae01861481 (diff) | |
| download | abrt-707f64b85c8a1b88923617ff72bd8a4ca562f3bd.tar.gz abrt-707f64b85c8a1b88923617ff72bd8a4ca562f3bd.tar.xz abrt-707f64b85c8a1b88923617ff72bd8a4ca562f3bd.zip | |
prevent destructors from throwing exceptions; check curl_easy_init errors
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'lib/Plugins')
| -rw-r--r-- | lib/Plugins/Catcut.cpp | 9 | ||||
| -rw-r--r-- | lib/Plugins/FileTransfer.cpp | 8 | ||||
| -rw-r--r-- | lib/Plugins/KerneloopsReporter.cpp | 4 | ||||
| -rw-r--r-- | lib/Plugins/SQLite3.cpp | 13 | ||||
| -rw-r--r-- | lib/Plugins/TicketUploader.cpp | 8 |
5 files changed, 19 insertions, 23 deletions
diff --git a/lib/Plugins/Catcut.cpp b/lib/Plugins/Catcut.cpp index 35f56f25..a56015d2 100644 --- a/lib/Plugins/Catcut.cpp +++ b/lib/Plugins/Catcut.cpp @@ -1,6 +1,3 @@ -#include <xmlrpc-c/base.h> -#include <xmlrpc-c/client.h> -#include <curl/curl.h> #include "abrtlib.h" #include "abrt_xmlrpc.h" #include "Catcut.h" @@ -18,11 +15,7 @@ using namespace std; static int put_stream(const char *pURL, FILE* f, size_t content_length) { - CURL* curl = curl_easy_init(); - if (!curl) - { - throw CABRTException(EXCEP_PLUGIN, "put_stream: can't initialize curl library"); - } + CURL* curl = xcurl_easy_init(); /* enable uploading */ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); /* specify target */ diff --git a/lib/Plugins/FileTransfer.cpp b/lib/Plugins/FileTransfer.cpp index 08bba6ca..60e1e66b 100644 --- a/lib/Plugins/FileTransfer.cpp +++ b/lib/Plugins/FileTransfer.cpp @@ -35,8 +35,8 @@ #include <libtar.h> #include <bzlib.h> #include <zlib.h> -#include <curl/curl.h> #include "abrtlib.h" +#include "abrt_xmlrpc.h" /* for xcurl_easy_init */ #include "FileTransfer.h" #include "DebugDump.h" #include "ABRTException.h" @@ -85,11 +85,7 @@ void CFileTransfer::SendFile(const char *pURL, const char *pFilename) fclose(f); throw CABRTException(EXCEP_PLUGIN, "Can't stat archive file '%s'", pFilename); } - curl = curl_easy_init(); - if (!curl) - { - throw CABRTException(EXCEP_PLUGIN, "Curl library init error"); - } + curl = xcurl_easy_init(); /* enable uploading */ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); /* specify target */ diff --git a/lib/Plugins/KerneloopsReporter.cpp b/lib/Plugins/KerneloopsReporter.cpp index 26430be6..5cb525bc 100644 --- a/lib/Plugins/KerneloopsReporter.cpp +++ b/lib/Plugins/KerneloopsReporter.cpp @@ -25,9 +25,9 @@ */ #include "abrtlib.h" +#include "abrt_xmlrpc.h" /* for xcurl_easy_init */ #include "KerneloopsReporter.h" #include "CommLayerInner.h" -#include <curl/curl.h> #include "ABRTException.h" #define FILENAME_KERNELOOPS "kerneloops" @@ -64,7 +64,7 @@ static int http_post_to_kerneloops_site(const char *url, const char *oopsdata) struct curl_httppost *post = NULL; struct curl_httppost *last = NULL; - handle = curl_easy_init(); + handle = xcurl_easy_init(); curl_easy_setopt(handle, CURLOPT_URL, url); curl_formadd(&post, &last, diff --git a/lib/Plugins/SQLite3.cpp b/lib/Plugins/SQLite3.cpp index 12f8a5db..1979f246 100644 --- a/lib/Plugins/SQLite3.cpp +++ b/lib/Plugins/SQLite3.cpp @@ -238,7 +238,18 @@ CSQLite3::CSQLite3() : CSQLite3::~CSQLite3() { - DisConnect(); + /* Paranoia. In C++, destructor will abort() if it was called while unwinding + * the stack and it throws an exception. + */ + try + { + DisConnect(); + m_sDBPath.clear(); + } + catch (...) + { + error_msg_and_die("Internal error"); + } } void CSQLite3::DisConnect() diff --git a/lib/Plugins/TicketUploader.cpp b/lib/Plugins/TicketUploader.cpp index 14f5e1d5..a4fe0e87 100644 --- a/lib/Plugins/TicketUploader.cpp +++ b/lib/Plugins/TicketUploader.cpp @@ -20,8 +20,8 @@ #include <string> #include <fstream> #include <sstream> -#include <curl/curl.h> #include "abrtlib.h" +#include "abrt_xmlrpc.h" /* for xcurl_easy_init */ #include "TicketUploader.h" #include "DebugDump.h" #include "ABRTException.h" @@ -124,11 +124,7 @@ void CTicketUploader::SendFile(const char *pURL, const char *pFilename) { throw CABRTException(EXCEP_PLUGIN, "Can't stat archive file '%s'", pFilename); } - CURL* curl = curl_easy_init(); - if (!curl) - { - throw CABRTException(EXCEP_PLUGIN, "Curl library init error"); - } + CURL* curl = xcurl_easy_init(); /* enable uploading */ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); /* specify target */ |
