On 10/18/2010 06:05 PM, Denys Vlasenko wrote:
On Tue, 2010-08-17 at 15:25 +0200, Nikola Pajkovsky wrote:
Signed-off-by: Nikola Pajkovskynpajkovs@redhat.com
lib/plugins/RHTSupport.cpp | 79 ++++++++++++++++++++++++++----------------- lib/plugins/RHTSupport.h | 8 ++-- 2 files changed, 52 insertions(+), 35 deletions(-)
Memory leaks below. Check what happens with char *url, char *login, char *password. They are never freed:
Oops, my bad. Should I fix it or will you fix it when you split rhtsupport?
string CReporterRHticket::Report(const map_crash_data_t& pCrashData, const map_plugin_settings_t& pSettings, @@ -107,15 +115,18 @@ string CReporterRHticket::Report(const map_crash_data_t& pCrashData, map_plugin_settings_t::const_iterator end = pSettings.end(); map_plugin_settings_t::const_iterator it; it = pSettings.find("URL");
- string URL = (it == end ? m_sStrataURL : it->second);
- char *url = (it == end ? m_strata_url : xstrdup(it->second.c_str()));
it = pSettings.find("Login");
- string login = (it == end ? m_sLogin : it->second);
- char *login = (it == end ? m_login : xstrdup(it->second.c_str()));
it = pSettings.find("Password");
- string password = (it == end ? m_sPassword : it->second);
- char *password = (it == end ? m_password : xstrdup(it->second.c_str()));
it = pSettings.find("SSLVerify");
- bool ssl_verify = (it == end ? m_bSSLVerify : string_to_bool(it->second.c_str()));
- bool ssl_verify = (it == end ? m_ssl_verify : string_to_bool(it->second.c_str()));
- const string& package = get_crash_data_item_content(pCrashData, FILENAME_PACKAGE);
- const char *package = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_PACKAGE); // const string& component = get_crash_data_item_content(pCrashData, FILENAME_COMPONENT); // const string& release = get_crash_data_item_content(pCrashData, FILENAME_RELEASE); // const string& arch = get_crash_data_item_content(pCrashData, FILENAME_ARCHITECTURE);
@@ -123,20 +134,20 @@ string CReporterRHticket::Report(const map_crash_data_t& pCrashData, const char *reason = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_REASON); const char *function = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_CRASH_FUNCTION);
- string summary = "[abrt] " + package;
- struct strbuf *buf_summary = strbuf_new();
- strbuf_append_strf(buf_summary, "[abrt] %s", package);
if (function&& strlen(function)< 30)
- {
summary += ": ";
summary += function;
- }
strbuf_append_strf(buf_summary, ": %s", function);
if (reason)
- {
summary += ": ";
summary += reason;
- }
strbuf_append_strf(buf_summary, ": %s", reason);
- char *summary = strbuf_free_nobuf(buf_summary);
- string description = "abrt version: "VERSION"\n";
- description += make_description_bz(pCrashData);
char *bz_dsc = make_description_bz(pCrashData);
char *dsc = xasprintf("abrt version: "VERSION"\n%s", bz_dsc);
free(bz_dsc);
reportfile_t* file = new_reportfile();
@@ -231,13 +242,13 @@ string CReporterRHticket::Report(const map_crash_data_t& pCrashData,
{ update_client(_("Creating a new case..."));
char* result = send_report_to_new_case(URL.c_str(),
login.c_str(),
password.c_str(),
char* result = send_report_to_new_case(url,
login,
password, ssl_verify,
summary.c_str(),
description.c_str(),
package.c_str(),
summary,
dsc,
package, tempfile ); VERB3 log("post result:'%s'", result);
@@ -256,6 +267,9 @@ string CReporterRHticket::Report(const map_crash_data_t& pCrashData, free(tempfile); reportfile_free(file);
- free(summary);
- free(dsc);
if (strncasecmp(retval.c_str(), "error", 5) == 0) { throw CABRTException(EXCEP_PLUGIN, "%s", retval.c_str());
@@ -272,22 +286,25 @@ void CReporterRHticket::SetSettings(const map_plugin_settings_t& pSettings)