diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-21 13:00:52 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-21 13:00:52 +0100 |
| commit | c355df4b6d90f747bbd527c09b199e0825480fb6 (patch) | |
| tree | 469ae4601b5667f78b2338cd1ac37e6fabe77103 /lib | |
| parent | 6443695f275167adb123070daf2a6b6ecc0bb371 (diff) | |
| download | abrt-c355df4b6d90f747bbd527c09b199e0825480fb6.tar.gz abrt-c355df4b6d90f747bbd527c09b199e0825480fb6.tar.xz abrt-c355df4b6d90f747bbd527c09b199e0825480fb6.zip | |
restore saving of backtrace broken by client->server security fix
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Plugins/FileTransfer.cpp | 6 | ||||
| -rw-r--r-- | lib/Plugins/TicketUploader.h | 1 | ||||
| -rw-r--r-- | lib/Utils/CrashTypes.cpp | 47 |
3 files changed, 35 insertions, 19 deletions
diff --git a/lib/Plugins/FileTransfer.cpp b/lib/Plugins/FileTransfer.cpp index fff6f2d..e28fbbe 100644 --- a/lib/Plugins/FileTransfer.cpp +++ b/lib/Plugins/FileTransfer.cpp @@ -25,12 +25,6 @@ #include <iostream> #include <sstream> #include <fstream> -//#include <stdio.h> -//#include <string.h> -//#include <dirent.h> -//#include <sys/types.h> -//#include <sys/stat.h> -//#include <fcntl.h> #include <zip.h> #include <libtar.h> #include <bzlib.h> diff --git a/lib/Plugins/TicketUploader.h b/lib/Plugins/TicketUploader.h index fcc59f0..7a371a3 100644 --- a/lib/Plugins/TicketUploader.h +++ b/lib/Plugins/TicketUploader.h @@ -27,7 +27,6 @@ #include "Plugin.h" #include "Reporter.h" -//#include "CrashTypes.h" class CTicketUploader : public CReporter { diff --git a/lib/Utils/CrashTypes.cpp b/lib/Utils/CrashTypes.cpp index 552c366..4fc9333 100644 --- a/lib/Utils/CrashTypes.cpp +++ b/lib/Utils/CrashTypes.cpp @@ -62,9 +62,10 @@ void add_to_crash_data_ext(map_crash_data_t& pCrashData, { map_crash_data_t::iterator it = pCrashData.find(pItem); if (it == pCrashData.end()) { - pCrashData[pItem].push_back(pType); - pCrashData[pItem].push_back(pEditable); - pCrashData[pItem].push_back(pContent); + vector_string_t& v = pCrashData[pItem]; /* create empty vector */ + v.push_back(pType); + v.push_back(pEditable); + v.push_back(pContent); return; } vector_string_t& v = it->second; @@ -82,28 +83,50 @@ void add_to_crash_data(map_crash_data_t& pCrashData, add_to_crash_data_ext(pCrashData, pItem, CD_TXT, CD_ISNOTEDITABLE, pContent); } -const std::string& get_crash_data_item_content(const map_crash_data_t& crash_data, const char *key) +static const std::string* helper_get_crash_data_item_content(const map_crash_data_t& crash_data, const char *key) { map_crash_data_t::const_iterator it = crash_data.find(key); if (it == crash_data.end()) { - error_msg_and_die("Error accessing crash data: no ['%s']", key); + return NULL; } if (it->second.size() <= CD_CONTENT) { + return NULL; + } + return &it->second[CD_CONTENT]; +} + +const std::string& get_crash_data_item_content(const map_crash_data_t& crash_data, const char *key) +{ + const std::string* sp = helper_get_crash_data_item_content(crash_data, key); + if (sp == NULL) { + if (crash_data.find(key) == crash_data.end()) + error_msg_and_die("Error accessing crash data: no ['%s']", key); error_msg_and_die("Error accessing crash data: no ['%s'][%d]", key, CD_CONTENT); } - return it->second[CD_CONTENT]; + return *sp; +} + +const char *get_crash_data_item_content_or_NULL(const map_crash_data_t& crash_data, const char *key) +{ + const std::string* sp = helper_get_crash_data_item_content(crash_data, key); + if (!sp) { + return NULL; + } + return sp->c_str(); } void log_map_crash_data(const map_crash_data_t& data, const char *name) { - map_crash_data_t::const_iterator itc = data.begin(); - while (itc != data.end()) + map_crash_data_t::const_iterator it = data.begin(); + while (it != data.end()) { + ssize_t sz = it->second.size(); log("%s[%s]:%s/%s/'%.20s'", - name, itc->first.c_str(), - itc->second[0].c_str(), itc->second[1].c_str(), - itc->second[2].c_str() + name, it->first.c_str(), + sz > 0 ? it->second[0].c_str() : "<NO [0]>", + sz > 1 ? it->second[1].c_str() : "<NO [1]>", + sz > 2 ? it->second[2].c_str() : "<NO [2]>" ); - itc++; + it++; } } |
