summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-01-21 13:00:52 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-01-21 13:00:52 +0100
commitc355df4b6d90f747bbd527c09b199e0825480fb6 (patch)
tree469ae4601b5667f78b2338cd1ac37e6fabe77103 /lib
parent6443695f275167adb123070daf2a6b6ecc0bb371 (diff)
downloadabrt-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.cpp6
-rw-r--r--lib/Plugins/TicketUploader.h1
-rw-r--r--lib/Utils/CrashTypes.cpp47
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++;
}
}