diff --git a/0001-Use-g_free-for-GLib-alloc-d-memory.patch b/0001-Use-g_free-for-GLib-alloc-d-memory.patch deleted file mode 100644 index 65a85a245027d53e5c916852af8464f5343eeab7..0000000000000000000000000000000000000000 --- a/0001-Use-g_free-for-GLib-alloc-d-memory.patch +++ /dev/null @@ -1,1686 +0,0 @@ -From 8c262642f48300c671a8fb83d88f426f678deb78 Mon Sep 17 00:00:00 2001 -From: Michal Fabik -Date: Wed, 12 May 2021 23:08:23 +0200 -Subject: [PATCH] Use g_free for GLib-alloc'd memory - -See also https://github.com/abrt/abrt/pull/1567 - -Also, replace a few forgotten strdup's with g_strdup and drop some old -commented-out code. - -Signed-off-by: guojin17 ---- - src/cli/cli-report.c | 4 +-- - src/include/internal_libreport.h | 8 ++--- - src/lib/abrt_xmlrpc.c | 2 +- - src/lib/config_item_info.c | 16 +++++----- - src/lib/curl.c | 14 ++++----- - src/lib/dirsize.c | 2 +- - src/lib/dump_dir.c | 12 ++++---- - src/lib/event_config.c | 34 ++++++++++----------- - src/lib/event_xml_parser.c | 30 +++++++++--------- - src/lib/file_obj.c | 6 ++-- - src/lib/get_cmdline.c | 2 +- - src/lib/parse_options.c | 4 +-- - src/lib/problem_data.c | 22 ++++++------- - src/lib/problem_report.c | 20 ++++++------ - src/lib/proxies.c | 2 +- - src/lib/read_write.c | 2 +- - src/lib/reporters.c | 4 +-- - src/lib/run_event.c | 19 ++++++------ - src/lib/ureport.c | 38 +++++++++++------------ - src/lib/user_settings.c | 4 +-- - src/lib/workflow.c | 2 +- - src/lib/workflow_xml_parser.c | 8 ++--- - src/lib/xfuncs.c | 4 --- - src/plugins/mantisbt.c | 10 +++--- - src/plugins/reporter-kerneloops.c | 16 ---------- - src/plugins/reporter-mantisbt.c | 10 +++--- - src/plugins/reporter-print.c | 6 ++-- - src/plugins/reporter-systemd-journal.c | 6 ++-- - src/plugins/reporter-upload.c | 2 +- - src/plugins/reporter-ureport.c | 2 +- - src/plugins/rhbz.c | 2 +- - src/report-newt/report-newt.c | 16 +++++----- - tests/dump_dir.at | 47 +++++++++++++--------------- - tests/event_config.at | 2 +- - tests/helpers/testsuite.h | 2 +- - tests/iso_date.at | 2 +- - tests/make_description.at | 24 +++++++-------- - tests/problem_data.at | 2 +- - tests/problem_report.at | 2 +- - tests/report_result.at | 8 ++--- - tests/ureport.at | 56 +++++++++++++++------------------- - tests/uriparser.at | 4 +-- - 42 files changed, 222 insertions(+), 256 deletions(-) - -diff --git a/src/cli/cli-report.c b/src/cli/cli-report.c -index 0449436..1702f6d 100644 ---- a/src/cli/cli-report.c -+++ b/src/cli/cli-report.c -@@ -25,7 +25,7 @@ - - /* - * Escapes the field content string to avoid confusion with file comments. -- * Returned field must be free()d by caller. -+ * Returned field must be g_free()d by caller. - */ - static char *escape(const char *str) - { -@@ -239,7 +239,7 @@ static int read_crash_report_field(const char *text, problem_data_t *report, - if (strcmp(newvalue, oldvalue) == 0) - return 0; - -- free(value->content); -+ g_free(value->content); - value->content = g_strdup(newvalue); - return 1; - } -diff --git a/src/include/internal_libreport.h b/src/include/internal_libreport.h -index 54be6a4..5b1f7a3 100644 ---- a/src/include/internal_libreport.h -+++ b/src/include/internal_libreport.h -@@ -450,7 +450,7 @@ GString *libreport_strbuf_prepend_strfv(GString *strbuf, - const char *format, va_list p); - - /* Returns command line of running program. -- * Caller is responsible to free() the returned value. -+ * Caller is responsible to g_free() the returned value. - * If the pid is not valid or command line can not be obtained, - * empty string is returned. - */ -@@ -601,8 +601,8 @@ void libreport_parse_osinfo(const char *osinfo_bytes, GHashTable *osinfo); - * https://bugzilla.redhat.com/show_bug.cgi?id=950373 - * - * @param osinfo Input data from which the values are built -- * @param produc Non-NULL pointer where pointer to malloced string will be stored. Memory must be released by free() -- * @param version Non-NULL pointer where pointer to malloced string will be stored. Memory must be released by free() -+ * @param product Non-NULL pointer where pointer to g_malloced string will be stored. Memory must be released by g_free() -+ * @param version Non-NULL pointer where pointer to g_malloced string will be stored. Memory must be released by g_free() - */ - void libreport_parse_osinfo_for_bz(GHashTable *osinfo, char **product, char **version); - -@@ -615,7 +615,7 @@ void libreport_parse_osinfo_for_bz(GHashTable *osinfo, char **product, char **ve - * https://github.com/abrt/libreport/issues/459 - * - * @param osinfo Input data from which the values are built -- * @param url Non-NULL pointer where pointer to malloced string will be stored. Memory must be released by free() -+ * @param url Non-NULL pointer where pointer to g_malloced string will be stored. Memory must be released by g_free() - */ - void libreport_parse_osinfo_for_bug_url(GHashTable *osinfo, char** url); - -diff --git a/src/lib/abrt_xmlrpc.c b/src/lib/abrt_xmlrpc.c -index 7cac925..6f1e613 100644 ---- a/src/lib/abrt_xmlrpc.c -+++ b/src/lib/abrt_xmlrpc.c -@@ -122,7 +122,7 @@ void abrt_xmlrpc_free_client(struct abrt_xmlrpc *ax) - - g_list_free(ax->ax_session_params); - -- free(ax); -+ g_free(ax); - } - - void abrt_xmlrpc_client_add_session_param_string(xmlrpc_env *env, struct abrt_xmlrpc *ax, -diff --git a/src/lib/config_item_info.c b/src/lib/config_item_info.c -index 3bb6812..66d0c6e 100644 ---- a/src/lib/config_item_info.c -+++ b/src/lib/config_item_info.c -@@ -41,29 +41,29 @@ void free_config_info(config_item_info_t *info) - if (info == NULL) - return; - -- free(info->name); -- free(info->screen_name); -- free(info->description); -- free(info->long_desc); -+ g_free(info->name); -+ g_free(info->screen_name); -+ g_free(info->description); -+ g_free(info->long_desc); - -- free(info); -+ g_free(info); - } - - void ci_set_screen_name(config_item_info_t *ci, const char *screen_name) - { -- free(ci->screen_name); -+ g_free(ci->screen_name); - ci->screen_name = g_strdup(screen_name); - } - - void ci_set_description(config_item_info_t *ci, const char *description) - { -- free(ci->description); -+ g_free(ci->description); - ci->description = g_strdup(description); - } - - void ci_set_long_desc(config_item_info_t *ci, const char *long_description) - { -- free(ci->long_desc); -+ g_free(ci->long_desc); - ci->long_desc = g_strdup(long_description); - } - -diff --git a/src/lib/curl.c b/src/lib/curl.c -index 4a5bc0c..9b7920a 100644 ---- a/src/lib/curl.c -+++ b/src/lib/curl.c -@@ -127,12 +127,12 @@ void free_post_state(post_state_t *state) - if (headers) - { - while (*headers) -- free(*headers++); -- free(state->headers); -+ g_free(*headers++); -+ g_free(state->headers); - } -- free(state->curl_error_msg); -+ g_free(state->curl_error_msg); - free(state->body); -- free(state); -+ g_free(state); - } - - char *find_header_in_post_state(post_state_t *state, const char *str) -@@ -183,7 +183,7 @@ save_headers(void *buffer_pv, size_t count, size_t nmemb, void *ptr) - if (headers) - { - while (*headers) -- free(*headers++); -+ g_free(*headers++); - } - cnt = 0; - } -@@ -666,12 +666,12 @@ char *libreport_upload_file_ext(post_state_t *state, const char *url, const char - { - char *msg = g_strdup_printf(_("Please enter user name for '%s//%s':"), scheme, hostname); - username = libreport_ask(msg); -- free(msg); -+ g_free(msg); - if (username != NULL && username[0] != '\0') - { - msg = g_strdup_printf(_("Please enter password for '%s//%s@%s':"), scheme, username, hostname); - password = libreport_ask_password(msg); -- free(msg); -+ g_free(msg); - /* What about empty password? */ - if (password != NULL && password[0] != '\0') - { -diff --git a/src/lib/dirsize.c b/src/lib/dirsize.c -index 47044b4..18f1148 100644 ---- a/src/lib/dirsize.c -+++ b/src/lib/dirsize.c -@@ -138,7 +138,7 @@ double libreport_get_dirsize_find_largest_dir( - if (!proc_dir || strcmp(proc_dir, ep->d_name) != 0) - { - maxsz = sz; -- free(*worst_dir); -+ g_free(*worst_dir); - *worst_dir = g_strdup(ep->d_name); - } - } -diff --git a/src/lib/dump_dir.c b/src/lib/dump_dir.c -index 4213081..d711c40 100644 ---- a/src/lib/dump_dir.c -+++ b/src/lib/dump_dir.c -@@ -304,7 +304,7 @@ static int read_number_from_file_at(int dir_fd, const char *filename, const char - - finito: - close(fd); -- free(value_buf); -+ g_free(value_buf); - /* If we got here, strtoll() successfully parsed a number */ - return ret; - } -@@ -538,9 +538,9 @@ void dd_close(struct dump_dir *dd) - - dd_clear_next_file(dd); - -- free(dd->dd_type); -- free(dd->dd_dirname); -- free(dd); -+ g_free(dd->dd_type); -+ g_free(dd->dd_dirname); -+ g_free(dd); - } - - static int dd_create_subdir(int dd_fd, const char *dirname, uid_t dd_uid, gid_t dd_gid, mode_t dd_mode) -@@ -1445,7 +1445,7 @@ void dd_sanitize_mode_and_owner(struct dump_dir *dd) - - close(fd); - next: -- free(short_name); -+ g_free(short_name); - } - - /* No need to check return value, the functions print good messages. -@@ -2199,7 +2199,7 @@ int dd_rename(struct dump_dir *dd, const char *new_path) - int res = rename(dd->dd_dirname, new_path); - if (res == 0) - { -- free(dd->dd_dirname); -+ g_free(dd->dd_dirname); - dd->dd_dirname = rm_trailing_slashes(new_path); - } - return res; -diff --git a/src/lib/event_config.c b/src/lib/event_config.c -index 01e91ef..9a79994 100644 ---- a/src/lib/event_config.c -+++ b/src/lib/event_config.c -@@ -130,22 +130,20 @@ void free_invalid_options(invalid_option_t *p) - { - if (!p) - return; -- free(p->invopt_name); -- free(p->invopt_error); -- free(p); -+ g_free(p->invopt_name); -+ g_free(p->invopt_error); -+ g_free(p); - } - - void free_event_option(event_option_t *p) - { - if (!p) - return; -- free(p->eo_name); -- free(p->eo_value); -- free(p->eo_label); -- free(p->eo_note_html); -- //free(p->eo_description); -- //free(p->eo_allowed_value); -- free(p); -+ g_free(p->eo_name); -+ g_free(p->eo_value); -+ g_free(p->eo_label); -+ g_free(p->eo_note_html); -+ g_free(p); - } - - void free_event_config(event_config_t *p) -@@ -154,15 +152,15 @@ void free_event_config(event_config_t *p) - return; - - free_config_info(p->info); -- free(p->ec_requires_items); -- free(p->ec_exclude_items_by_default); -- free(p->ec_include_items_by_default); -- free(p->ec_exclude_items_always); -- free(p->ec_restricted_access_option); -- g_list_free_full(p->ec_imported_event_names, free); -+ g_free(p->ec_requires_items); -+ g_free(p->ec_exclude_items_by_default); -+ g_free(p->ec_include_items_by_default); -+ g_free(p->ec_exclude_items_always); -+ g_free(p->ec_restricted_access_option); -+ g_list_free_full(p->ec_imported_event_names, g_free); - g_list_free_full(p->options, (GDestroyNotify)free_event_option); - -- free(p); -+ g_free(p); - } - - -@@ -211,7 +209,7 @@ static void load_config_files(const char *dir_path) - if (elem) - { - opt = elem->data; -- free(opt->eo_value); -+ g_free(opt->eo_value); - } - else - { -diff --git a/src/lib/event_xml_parser.c b/src/lib/event_xml_parser.c -index e7e2657..52bfab2 100644 ---- a/src/lib/event_xml_parser.c -+++ b/src/lib/event_xml_parser.c -@@ -149,7 +149,7 @@ static void consume_cur_option(struct my_parse_data *parse_data) - /* ...and it already has a value, which - * overrides xml-defined default one: - */ -- free(opt->eo_value); -+ g_free(opt->eo_value); - opt->eo_value = old_opt->eo_value; - old_opt->eo_value = NULL; - } -@@ -198,7 +198,7 @@ static void start_element(GMarkupParseContext *context, - log_info("attr: %s:%s", attribute_names[i], attribute_values[i]); - if (strcmp(attribute_names[i], "name") == 0) - { -- free(opt->eo_name); -+ g_free(opt->eo_name); - opt->eo_name = g_strdup(attribute_values[i]); - } - else if (strcmp(attribute_names[i], "type") == 0) -@@ -233,7 +233,7 @@ static void start_element(GMarkupParseContext *context, - || strcmp(element_name, NAME_ELEMENT) == 0 - || strcmp(element_name, NOTE_HTML_ELEMENT) == 0 - ) { -- free(parse_data->attribute_lang); -+ g_free(parse_data->attribute_lang); - parse_data->attribute_lang = get_element_lang(parse_data, attribute_names, attribute_values); - } - else -@@ -260,7 +260,7 @@ static void end_element(GMarkupParseContext *context, - { - struct my_parse_data *parse_data = user_data; - -- free(parse_data->attribute_lang); -+ g_free(parse_data->attribute_lang); - parse_data->attribute_lang = NULL; - - if (strcmp(element_name, ADV_OPTIONS_ELEMENT) == 0) -@@ -309,7 +309,7 @@ static void text(GMarkupParseContext *context, - (strcmp(parse_data->attribute_lang, parse_data->cur_locale) == 0); - - log_info("new label:'%s'", text_copy); -- free(opt->eo_label); -+ g_free(opt->eo_label); - opt->eo_label = text_copy; - text_copy = NULL; - } -@@ -325,7 +325,7 @@ static void text(GMarkupParseContext *context, - else if (strcmp(inner_element, DEFAULT_VALUE_ELEMENT) == 0) - { - log_info("default value:'%s'", text_copy); -- free(opt->eo_value); -+ g_free(opt->eo_value); - opt->eo_value = text_copy; - text_copy = NULL; - } -@@ -345,7 +345,7 @@ static void text(GMarkupParseContext *context, - (strcmp(parse_data->attribute_lang, parse_data->cur_locale) == 0); - - log_info("html note:'%s'", text_copy); -- free(opt->eo_note_html); -+ g_free(opt->eo_note_html); - opt->eo_note_html = text_copy; - text_copy = NULL; - } -@@ -361,7 +361,7 @@ static void text(GMarkupParseContext *context, - if (strcmp(inner_element, DESCRIPTION_ELEMENT) == 0) - { - log_info("tooltip:'%s'", text_copy); -- free(opt->eo_description); -+ g_free(opt->eo_description); - opt->eo_description = text_copy; - text_copy = NULL; - } -@@ -440,25 +440,25 @@ static void text(GMarkupParseContext *context, - } - else if (strcmp(inner_element, REQUIRES_ELEMENT) == 0) - { -- free(ui->ec_requires_items); -+ g_free(ui->ec_requires_items); - ui->ec_requires_items = text_copy; - text_copy = NULL; - } - else if (strcmp(inner_element, EXCL_BY_DEFAULT_ELEMENT) == 0) - { -- free(ui->ec_exclude_items_by_default); -+ g_free(ui->ec_exclude_items_by_default); - ui->ec_exclude_items_by_default = text_copy; - text_copy = NULL; - } - else if (strcmp(inner_element, INCL_BY_DEFAULT_ELEMENT) == 0) - { -- free(ui->ec_include_items_by_default); -+ g_free(ui->ec_include_items_by_default); - ui->ec_include_items_by_default = text_copy; - text_copy = NULL; - } - else if (strcmp(inner_element, EXCL_ALWAYS_ELEMENT) == 0) - { -- free(ui->ec_exclude_items_always); -+ g_free(ui->ec_exclude_items_always); - ui->ec_exclude_items_always = text_copy; - text_copy = NULL; - } -@@ -494,7 +494,7 @@ static void text(GMarkupParseContext *context, - ui->ec_requires_details = libreport_string_to_bool(text_copy); - } - } -- free(text_copy); -+ g_free(text_copy); - } - - // Called for strings that should be re-saved verbatim in this same -@@ -567,6 +567,6 @@ void load_event_description_from_file(event_config_t *event_config, const char* - g_markup_parse_context_free(context); - - consume_cur_option(&parse_data); /* just in case */ -- free(parse_data.attribute_lang); /* just in case */ -- free(parse_data.cur_locale); -+ g_free(parse_data.attribute_lang); /* just in case */ -+ g_free(parse_data.cur_locale); - } -diff --git a/src/lib/file_obj.c b/src/lib/file_obj.c -index 343418e..fef50ee 100644 ---- a/src/lib/file_obj.c -+++ b/src/lib/file_obj.c -@@ -32,9 +32,9 @@ void libreport_free_file_obj(file_obj_t *f) - if (f == NULL) - return; - -- free(f->fullpath); -- free(f->filename); -- free(f); -+ g_free(f->fullpath); -+ g_free(f->filename); -+ g_free(f); - } - - const char *fo_get_fullpath(file_obj_t *fo) -diff --git a/src/lib/get_cmdline.c b/src/lib/get_cmdline.c -index a02bb60..31dc3b3 100644 ---- a/src/lib/get_cmdline.c -+++ b/src/lib/get_cmdline.c -@@ -608,7 +608,7 @@ int libreport_dump_namespace_diff(const char *dest_filename, pid_t base_pid, pid - void libreport_mountinfo_destroy(struct mountinfo *mntnf) - { - for (size_t i = 0; i < ARRAY_SIZE(mntnf->mntnf_items); ++i) -- free(mntnf->mntnf_items[i]); -+ g_free(mntnf->mntnf_items[i]); - } - - static int _read_mountinfo_word(FILE *fin) -diff --git a/src/lib/parse_options.c b/src/lib/parse_options.c -index 0622325..9c98b95 100644 ---- a/src/lib/parse_options.c -+++ b/src/lib/parse_options.c -@@ -217,7 +217,7 @@ unsigned libreport_parse_opts(int argc, char **argv, const struct options *opt, - - if (c == '?' || help) - { -- free(longopts); -+ g_free(longopts); - g_string_free(shortopts, TRUE); - libreport_xfunc_error_retval = 0; /* this isn't error, exit code = 0 */ - libreport_show_usage_and_die(usage, opt); -@@ -260,7 +260,7 @@ unsigned libreport_parse_opts(int argc, char **argv, const struct options *opt, - } - } - -- free(longopts); -+ g_free(longopts); - g_string_free(shortopts, TRUE); - - return retval; -diff --git a/src/lib/problem_data.c b/src/lib/problem_data.c -index 5b35235..1e1e6d8 100644 ---- a/src/lib/problem_data.c -+++ b/src/lib/problem_data.c -@@ -23,8 +23,8 @@ static void free_problem_item(void *ptr) - if (ptr) - { - struct problem_item *item = (struct problem_item *)ptr; -- free(item->content); -- free(item); -+ g_free(item->content); -+ g_free(item); - } - } - -@@ -340,7 +340,7 @@ static int is_text_file_at(int dir_fd, const char *name, char **content, ssize_t - if (r < 0) - { - close(fd); -- free(buf); -+ g_free(buf); - return -EIO; /* it's not text (because we can't read it) */ - } - -@@ -386,7 +386,7 @@ static int is_text_file_at(int dir_fd, const char *name, char **content, ssize_t - /* We don't like NULs and other control chars very much. - * Not text for sure! - */ -- free(buf); -+ g_free(buf); - return CD_FLAG_BIN; - } - if (buf[i] == 0x7f) -@@ -408,13 +408,13 @@ static int is_text_file_at(int dir_fd, const char *name, char **content, ssize_t - if ((total_chars / bad_chars) >= RATIO) - goto text; /* looks like text to me */ - -- free(buf); -+ g_free(buf); - return CD_FLAG_BIN; /* it's binary */ - - text: - if (size > CD_MAX_TEXT_SIZE) - { -- free(buf); -+ g_free(buf); - return CD_FLAG_BIN | CD_FLAG_BIGTXT; - } - -@@ -451,7 +451,7 @@ static int _problem_data_load_dump_dir_element(struct dump_dir *dd, const char * - if (sz >= IS_TEXT_FILE_AT_PROBE_SIZE) /* did is_text_file() read entire file? */ - { - /* no, it didn't, we need to read it all */ -- free(text); -+ g_free(text); - lseek(*file_fd_ptr, 0, SEEK_SET); - text = libreport_xmalloc_read(*file_fd_ptr, NULL); - } -@@ -472,7 +472,7 @@ static int _problem_data_load_dump_dir_element(struct dump_dir *dd, const char * - - if (sanitized != NULL) - { -- free(text); -+ g_free(text); - text = sanitized; - } - -@@ -555,10 +555,10 @@ void problem_data_load_from_dump_dir(problem_data_t *problem_data, struct dump_d - content, - flags - ); -- free(content); -+ g_free(content); - next: -- free(short_name); -- free(full_name); -+ g_free(short_name); -+ g_free(full_name); - } - } - -diff --git a/src/lib/problem_report.c b/src/lib/problem_report.c -index 7b0434c..8540d18 100644 ---- a/src/lib/problem_report.c -+++ b/src/lib/problem_report.c -@@ -123,11 +123,11 @@ section_free(section_t *self) - if (self == NULL) - return; - -- free(self->name); -+ g_free(self->name); - g_list_free_full(self->items, free); - g_list_free_full(self->children, (GDestroyNotify)section_free); - -- free(self); -+ g_free(self); - } - - static int -@@ -285,7 +285,7 @@ load_stream(FILE *fp) - master->children = g_list_prepend(master->children, sec); - - free_line: -- free(line); -+ g_free(line); - } - - /* If master equals sec, then master's children list was not yet reversed. -@@ -812,7 +812,7 @@ memstream_buffer_free(struct memstream_buffer *self) - free(self->msb_buffer); - self->msb_buffer = DESTROYED_POINTER; - -- free(self); -+ g_free(self); - } - - static FILE * -@@ -1015,7 +1015,7 @@ problem_report_free(problem_report_t *self) - self->pr_sec_custom = DESTROYED_POINTER; - } - -- free(self); -+ g_free(self); - } - - /* -@@ -1044,10 +1044,10 @@ extra_section_free(struct extra_section *self) - if (self == NULL) - return; - -- free(self->pfes_name); -+ g_free(self->pfes_name); - self->pfes_name = DESTROYED_POINTER; - -- free(self); -+ g_free(self); - } - - static int -@@ -1114,13 +1114,13 @@ problem_formatter_free(problem_formatter_t *self) - g_list_free_full(self->pf_extra_sections, (GDestroyNotify)extra_section_free); - self->pf_extra_sections = DESTROYED_POINTER; - -- free(self->pf_default_summary); -+ g_free(self->pf_default_summary); - self->pf_default_summary = DESTROYED_POINTER; - -- free(self->fmt_file); -+ g_free(self->fmt_file); - self->fmt_file = DESTROYED_POINTER; - -- free(self); -+ g_free(self); - } - - static int -diff --git a/src/lib/proxies.c b/src/lib/proxies.c -index 2f33488..3b46d9d 100644 ---- a/src/lib/proxies.c -+++ b/src/lib/proxies.c -@@ -48,7 +48,7 @@ GList *get_proxy_list(const char *url) - /* Don't set proxy if the list contains just "direct://" */ - if (l && !g_list_next(l) && !strcmp(l->data, "direct://")) - { -- free(l->data); -+ g_free(l->data); - g_list_free(l); - l = NULL; - } -diff --git a/src/lib/read_write.c b/src/lib/read_write.c -index 526ab2e..f186926 100644 ---- a/src/lib/read_write.c -+++ b/src/lib/read_write.c -@@ -148,7 +148,7 @@ void* libreport_xmalloc_read(int fd, size_t *maxsz_p) - buf = g_realloc(buf, total + size + 1); - rd_size = libreport_full_read(fd, buf + total, size); - if ((ssize_t)rd_size == (ssize_t)(-1)) { /* error */ -- free(buf); -+ g_free(buf); - return NULL; - } - total += rd_size; -diff --git a/src/lib/reporters.c b/src/lib/reporters.c -index d68cdd2..faec6b8 100644 ---- a/src/lib/reporters.c -+++ b/src/lib/reporters.c -@@ -31,10 +31,10 @@ libreport_is_comment_dup(GList *comments, const char *comment) - const char * const comment_body = (const char *) l->data; - char * const trim_comment_body = libreport_trim_all_whitespace(comment_body); - same_comments = (strcmp(trim_comment_body, trim_comment) == 0); -- free(trim_comment_body); -+ g_free(trim_comment_body); - } - -- free(trim_comment); -+ g_free(trim_comment); - return same_comments; - } - -diff --git a/src/lib/run_event.c b/src/lib/run_event.c -index bca7297..efb1945 100644 ---- a/src/lib/run_event.c -+++ b/src/lib/run_event.c -@@ -126,8 +126,8 @@ void free_rule_list(GList *rule_list) - { - struct rule *cur_rule = rule_list->data; - g_list_free_full(cur_rule->conditions, free); -- free(cur_rule->command); -- free(cur_rule); -+ g_free(cur_rule->command); -+ g_free(cur_rule); - - GList *next = rule_list->next; - g_list_free_1(rule_list); -@@ -165,7 +165,7 @@ GList *load_rule_list(GList *rule_list, - if (*next_line == '\0' || *next_line == '#') - { - log_parser("empty or comment, skipping"); -- free(next_line); -+ g_free(next_line); - continue; - } - -@@ -207,14 +207,14 @@ GList *load_rule_list(GList *rule_list, - if (fseek(conffile, prev, SEEK_SET) < 0) - perror_msg_and_die("fseek"); - -- free(next_line); -+ g_free(next_line); - break; - } - - ++line_counter; - char *tmp = g_strdup_printf("%s\n%s", line, next_line); -- free(line); -- free(next_line); -+ g_free(line); -+ g_free(next_line); - line = tmp; - } - -@@ -303,7 +303,7 @@ GList *load_rule_list(GList *rule_list, - else - log_parser("Unknown line found, ignoring: '%s'", line); - -- free(line); -+ g_free(line); - } /* end of line loop */ - - fclose(conffile); -@@ -389,7 +389,7 @@ static char* pop_next_command(GList **pp_rule_list, - goto next_rule; /* prefix doesn't match */ - if (pp_event_name) - { -- free(*pp_event_name); -+ g_free(*pp_event_name); - *pp_event_name = g_strdup(eq_sign + 1); - } - } -@@ -444,8 +444,7 @@ static char* pop_next_command(GList **pp_rule_list, - *pp_rule_list = g_list_remove(*pp_rule_list, cur_rule); - g_list_free_full(cur_rule->conditions, free); - command = cur_rule->command; -- /*free(cur_rule->command); - WRONG! we are returning it! */ -- free(cur_rule); -+ g_free(cur_rule); - break; - - next_rule: -diff --git a/src/lib/ureport.c b/src/lib/ureport.c -index 0e3311f..5e022aa 100644 ---- a/src/lib/ureport.c -+++ b/src/lib/ureport.c -@@ -47,7 +47,7 @@ puppet_config_print(const char *key) - *newline = '\0'; - return result; - error: -- free(result); -+ g_free(result); - error_msg_and_die("Unable to determine puppet %s path (puppet not installed?)", key); - } - -@@ -55,7 +55,7 @@ void - libreport_ureport_server_config_set_url(struct ureport_server_config *config, - char *server_url) - { -- free(config->ur_url); -+ g_free(config->ur_url); - config->ur_url = server_url; - } - -@@ -68,10 +68,10 @@ libreport_ureport_server_config_set_client_auth(struct ureport_server_config *co - - if (strcmp(client_auth, "") == 0) - { -- free(config->ur_client_cert); -+ g_free(config->ur_client_cert); - config->ur_client_cert = NULL; - -- free(config->ur_client_key); -+ g_free(config->ur_client_key); - config->ur_client_key = NULL; - - log_notice("Not using client authentication"); -@@ -96,10 +96,10 @@ libreport_ureport_server_config_set_client_auth(struct ureport_server_config *co - log_notice("Using client certificate: %s", config->ur_client_cert); - log_notice("Using client private key: %s", config->ur_client_key); - -- free(config->ur_username); -+ g_free(config->ur_username); - config->ur_username = NULL; - -- free(config->ur_password); -+ g_free(config->ur_password); - config->ur_password = NULL; - } - } -@@ -110,10 +110,10 @@ libreport_ureport_server_config_set_basic_auth(struct ureport_server_config *con - { - libreport_ureport_server_config_set_client_auth(config, ""); - -- free(config->ur_username); -+ g_free(config->ur_username); - config->ur_username = g_strdup(login); - -- free(config->ur_password); -+ g_free(config->ur_password); - config->ur_password = g_strdup(password); - } - -@@ -203,22 +203,22 @@ libreport_ureport_server_config_init(struct ureport_server_config *config) - void - libreport_ureport_server_config_destroy(struct ureport_server_config *config) - { -- free(config->ur_url); -+ g_free(config->ur_url); - config->ur_url = DESTROYED_POINTER; - -- free(config->ur_client_cert); -+ g_free(config->ur_client_cert); - config->ur_client_cert = DESTROYED_POINTER; - -- free(config->ur_client_key); -+ g_free(config->ur_client_key); - config->ur_client_key = DESTROYED_POINTER; - -- free(config->ur_cert_authority_cert); -+ g_free(config->ur_cert_authority_cert); - config->ur_cert_authority_cert = DESTROYED_POINTER; - -- free(config->ur_username); -+ g_free(config->ur_username); - config->ur_username = DESTROYED_POINTER; - -- free(config->ur_password); -+ g_free(config->ur_password); - config->ur_password = DESTROYED_POINTER; - - g_list_free_full(config->ur_prefs.urp_auth_items, g_free); -@@ -231,22 +231,22 @@ libreport_ureport_server_response_free(struct ureport_server_response *resp) - if (!resp) - return; - -- free(resp->urr_solution); -+ g_free(resp->urr_solution); - resp->urr_solution = DESTROYED_POINTER; - - g_list_free_full(resp->urr_reported_to_list, g_free); - resp->urr_reported_to_list = DESTROYED_POINTER; - -- free(resp->urr_bthash); -+ g_free(resp->urr_bthash); - resp->urr_bthash = DESTROYED_POINTER; - -- free(resp->urr_message); -+ g_free(resp->urr_message); - resp->urr_message = DESTROYED_POINTER; - -- free(resp->urr_value); -+ g_free(resp->urr_value); - resp->urr_value = DESTROYED_POINTER; - -- free(resp); -+ g_free(resp); - } - - static char * -diff --git a/src/lib/user_settings.c b/src/lib/user_settings.c -index a865d67..e699620 100644 ---- a/src/lib/user_settings.c -+++ b/src/lib/user_settings.c -@@ -79,7 +79,7 @@ bool libreport_save_user_settings() - bool libreport_load_user_settings(const char *application_name) - { - if (conf_path) -- free(conf_path); -+ g_free(conf_path); - conf_path = get_conf_path(application_name); - - if (user_settings) -@@ -127,7 +127,7 @@ GList *libreport_load_words_from_file(const char* filename) - if (line[0] != '#') // if it's not comment - words_list = g_list_append(words_list, line); - else -- free(line); -+ g_free(line); - } - fclose(fp); - } -diff --git a/src/lib/workflow.c b/src/lib/workflow.c -index bba4faf..029820a 100644 ---- a/src/lib/workflow.c -+++ b/src/lib/workflow.c -@@ -46,7 +46,7 @@ void free_workflow(workflow_t *w) - - free_config_info(w->info); - g_list_free_full(w->events, (GDestroyNotify)free_event_config); -- free(w); -+ g_free(w); - } - - void free_workflow_list(GHashTable **wl) -diff --git a/src/lib/workflow_xml_parser.c b/src/lib/workflow_xml_parser.c -index 9523d90..fb6cd00 100644 ---- a/src/lib/workflow_xml_parser.c -+++ b/src/lib/workflow_xml_parser.c -@@ -46,7 +46,7 @@ static void start_element(GMarkupParseContext *context, - if (strcmp(element_name, NAME_ELEMENT) == 0 - || strcmp(element_name, DESCRIPTION_ELEMENT) == 0 - ) { -- free(parse_data->attribute_lang); -+ g_free(parse_data->attribute_lang); - parse_data->attribute_lang = get_element_lang(parse_data, attribute_names, attribute_values); - } - } -@@ -59,7 +59,7 @@ static void end_element(GMarkupParseContext *context, - { - struct my_parse_data *parse_data = user_data; - -- free(parse_data->attribute_lang); -+ g_free(parse_data->attribute_lang); - parse_data->attribute_lang = NULL; - - if (strcmp(element_name, EVENTS_ELEMENT) == 0) -@@ -223,6 +223,6 @@ void load_workflow_description_from_file(workflow_t *workflow, const char* filen - - g_markup_parse_context_free(context); - -- free(parse_data.attribute_lang); /* just in case */ -- free(parse_data.cur_locale); -+ g_free(parse_data.attribute_lang); /* just in case */ -+ g_free(parse_data.cur_locale); - } -diff --git a/src/lib/xfuncs.c b/src/lib/xfuncs.c -index b516f22..c7afb7e 100644 ---- a/src/lib/xfuncs.c -+++ b/src/lib/xfuncs.c -@@ -136,10 +136,6 @@ char* libreport_xvasprintf(const char *format, va_list p) - - void libreport_safe_unsetenv(const char *var_val) - { -- //char *name = g_strndup(var_val, strchrnul(var_val, '=') - var_val); -- //unsetenv(name); -- //free(name); -- - /* Avoid malloc/free (name is usually very short) */ - unsigned len = strchrnul(var_val, '=') - var_val; - char name[len + 1]; -diff --git a/src/plugins/mantisbt.c b/src/plugins/mantisbt.c -index 9682e65..eef2c76 100644 ---- a/src/plugins/mantisbt.c -+++ b/src/plugins/mantisbt.c -@@ -73,11 +73,11 @@ mantisbt_settings_free(mantisbt_settings_t *s) - if (s == NULL) - return; - -- free(s->m_login); -- free(s->m_password); -- free(s->m_project); -- free(s->m_project_id); -- free(s->m_project_version); -+ g_free(s->m_login); -+ g_free(s->m_password); -+ g_free(s->m_project); -+ g_free(s->m_project_id); -+ g_free(s->m_project_version); - } - - /* -diff --git a/src/plugins/reporter-kerneloops.c b/src/plugins/reporter-kerneloops.c -index 2b667ca..f6e9d4a 100644 ---- a/src/plugins/reporter-kerneloops.c -+++ b/src/plugins/reporter-kerneloops.c -@@ -23,22 +23,6 @@ - static size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream) - { - size *= nmemb; --/* -- char *c, *c1, *c2; -- -- log_warning("received: '%*.*s'", (int)size, (int)size, (char*)ptr); -- c = (char*)g_malloc0(size + 1); -- memcpy(c, ptr, size); -- c1 = strstr(c, "201 "); -- if (c1) -- { -- c1 += 4; -- c2 = strchr(c1, '\n'); -- if (c2) -- *c2 = 0; -- } -- free(c); --*/ - - return size; - } -diff --git a/src/plugins/reporter-mantisbt.c b/src/plugins/reporter-mantisbt.c -index 909b2bb..b874975 100644 ---- a/src/plugins/reporter-mantisbt.c -+++ b/src/plugins/reporter-mantisbt.c -@@ -74,8 +74,8 @@ ask_mantisbt_password(const char *message) - static void - ask_mantisbt_credentials(mantisbt_settings_t *settings, const char *pre_message) - { -- free(settings->m_login); -- free(settings->m_password); -+ g_free(settings->m_login); -+ g_free(settings->m_password); - - g_autofree char *question = g_strdup_printf("%s %s", pre_message, _("Please enter your MantisBT login:")); - settings->m_login = ask_mantisbt_login(question); -@@ -168,8 +168,8 @@ set_settings(mantisbt_settings_t *m, GHashTable *settings, struct dump_dir *dd) - - if (!m->m_project || !*m->m_project) /* if not overridden or empty... */ - { -- free(m->m_project); -- free(m->m_project_version); -+ g_free(m->m_project); -+ g_free(m->m_project_version); - - if (dd != NULL) - { -@@ -691,7 +691,7 @@ int main(int argc, char **argv) - if (g_list_find_custom(ii->mii_attachments, name, (GCompareFunc) strcmp) == NULL) - break; - -- free(name); -+ g_free(name); - } - mantisbt_attach_data(&mbt_settings, bug_id_str, name, bt, strlen(bt)); - } -diff --git a/src/plugins/reporter-print.c b/src/plugins/reporter-print.c -index 84ee736..224cd98 100644 ---- a/src/plugins/reporter-print.c -+++ b/src/plugins/reporter-print.c -@@ -86,11 +86,11 @@ int main(int argc, char **argv) - /* prompt for another file name if needed */ - if (msg) - { -- free(output_file); -+ g_free(output_file); - char *response = libreport_ask(msg); - if (!response) - perror_msg_and_die("libreport_ask"); -- free(msg); -+ g_free(msg); - - if (response[0] == '\0' || response[0] == '\n') - { -@@ -148,7 +148,7 @@ int main(int argc, char **argv) - } - const char *format = (open_mode[0] == 'a' ? _("The report was appended to %s") : _("The report was stored to %s")); - log_warning(format, output_file); -- free(output_file); -+ g_free(output_file); - } - - return 0; -diff --git a/src/plugins/reporter-systemd-journal.c b/src/plugins/reporter-systemd-journal.c -index 47572f9..41059c8 100644 ---- a/src/plugins/reporter-systemd-journal.c -+++ b/src/plugins/reporter-systemd-journal.c -@@ -88,10 +88,10 @@ static void msg_content_free(msg_content_t *msg_c) - return; - - for (unsigned i = 0; i < msg_c->used; ++i) -- free(msg_c->data[i].iov_base); -+ g_free(msg_c->data[i].iov_base); - -- free(msg_c->data); -- free(msg_c); -+ g_free(msg_c->data); -+ g_free(msg_c); - - return; - } -diff --git a/src/plugins/reporter-upload.c b/src/plugins/reporter-upload.c -index fc8eeb3..ee9b018 100644 ---- a/src/plugins/reporter-upload.c -+++ b/src/plugins/reporter-upload.c -@@ -67,7 +67,7 @@ static int interactive_upload_file(const char *url, const char *file_name, - if (remote_name) - *remote_name = tmp; - else -- free(tmp); -+ g_free(tmp); - - free_post_state(state); - -diff --git a/src/plugins/reporter-ureport.c b/src/plugins/reporter-ureport.c -index 17ce506..d5f587c 100644 ---- a/src/plugins/reporter-ureport.c -+++ b/src/plugins/reporter-ureport.c -@@ -313,7 +313,7 @@ int main(int argc, char **argv) - } - - struct ureport_server_response *response = libreport_ureport_submit(json_ureport, &config); -- free(json_ureport); -+ g_free(json_ureport); - - if (!response) - goto finalize; -diff --git a/src/plugins/rhbz.c b/src/plugins/rhbz.c -index c2855a7..cad0177 100644 ---- a/src/plugins/rhbz.c -+++ b/src/plugins/rhbz.c -@@ -65,7 +65,7 @@ void free_bug_info(struct bug_info *bi) - - g_list_free_full(bi->bi_cc_list, g_free); - -- free(bi); -+ g_free(bi); - } - - static GList *rhbz_comments(struct abrt_xmlrpc *ax, int bug_id) -diff --git a/src/report-newt/report-newt.c b/src/report-newt/report-newt.c -index 8e297cb..0bcdede 100644 ---- a/src/report-newt/report-newt.c -+++ b/src/report-newt/report-newt.c -@@ -180,12 +180,12 @@ static int configure_reporter(struct reporter *r, bool skip_if_valid) - case OPTION_TYPE_TEXT: - case OPTION_TYPE_NUMBER: - case OPTION_TYPE_PASSWORD: -- free(opt->eo_value); -- opt->eo_value = strdup(newtEntryGetValue(options[i])); -+ g_free(opt->eo_value); -+ opt->eo_value = g_strdup(newtEntryGetValue(options[i])); - break; - case OPTION_TYPE_BOOL: -- free(opt->eo_value); -- opt->eo_value = strdup(newtCheckboxGetValue(options[i]) == '*' ? "yes" : "no"); -+ g_free(opt->eo_value); -+ opt->eo_value = g_strdup(newtCheckboxGetValue(options[i]) == '*' ? "yes" : "no"); - break; - default: - break; -@@ -230,9 +230,9 @@ static char *save_log_line(char *log_line, void *param) - /* Append the log line */ - len = strlen(log->text) + 1 + strlen(log_line) + 1; - new = g_malloc(len); -- snprintf(new, len, "%s\n%s", log->text, log_line); -- free(log->text); -- free(log_line); -+ g_snprintf(new, len, "%s\n%s", log->text, log_line); -+ g_free(log->text); -+ g_free(log_line); - log->text = new; - newtTextboxSetText(log->co, new); - } -@@ -352,7 +352,7 @@ static int report(const char *dump_dir_name) - newtWinMessage(NULL, _("Ok"), _("No reporters available")); - - g_array_free(reporters, TRUE); -- free(events_as_lines); -+ g_free(events_as_lines); - - return 0; - } -diff --git a/tests/dump_dir.at b/tests/dump_dir.at -index 841bfe4..748701a 100644 ---- a/tests/dump_dir.at -+++ b/tests/dump_dir.at -@@ -86,8 +86,8 @@ void validate_dump_dir_contents(struct dump_dir *dd) - TS_ASSERT_STRING_EQ(short_name, (strrchr(full_name, '/') + 1), NULL); - TS_ASSERT_STRING_BEGINS_WITH(full_name, dd->dd_dirname, NULL); - TS_ASSERT_CHAR_EQ_MESSAGE(full_name[strlen(dd->dd_dirname)], '/', full_name); -- free(short_name); -- free(full_name); -+ g_free(short_name); -+ g_free(full_name); - } - - TS_ASSERT_SIGNED_EQ(items, items_counter); -@@ -101,8 +101,8 @@ void validate_dump_dir_contents(struct dump_dir *dd) - while (dd_get_next_file(dd, &short_name, &full_name)) - { - --items_counter; -- free(short_name); -- free(full_name); -+ g_free(short_name); -+ g_free(full_name); - } - - TS_ASSERT_SIGNED_OP_MESSAGE(items_counter, ==, 0, "Second run iterator goes through all items"); -@@ -749,11 +749,11 @@ TS_MAIN - - char *loaded_text = dd_load_text(dd, FILENAME_TYPE); - TS_ASSERT_STRING_EQ(loaded_text, "birds", "'type' is created from the passed string"); -- free(loaded_text); -+ g_free(loaded_text); - - loaded_text = dd_load_text(dd, "egg"); - TS_ASSERT_STRING_EQ(loaded_text, "canary", "Call back saves durable data"); -- free(loaded_text); -+ g_free(loaded_text); - TS_ASSERT_SIGNED_EQ(dd_delete(dd), 0); - } - -@@ -1039,36 +1039,35 @@ int main(void) - dd_save_text(dd, "empty", ""); - assert(dd_load_int32(dd, "empty", &value) == -EINVAL); - -- char *buf = NULL; -- asprintf(&buf, "%lld", -1LL + INT32_MIN); -+ char *buf = g_strdup_printf("%lld", -1LL + INT32_MIN); - assert(buf != NULL); - - dd_save_text(dd, "below_min", buf); -- free(buf); -+ g_free(buf); - - assert(dd_load_int32(dd, "below_min", &value) == -ERANGE); - -- asprintf(&buf, "%"PRId32, INT32_MIN); -+ buf = g_strdup_printf("%"PRId32, INT32_MIN); - dd_save_text(dd, "min", buf); -- free(buf); -+ g_free(buf); - - assert(dd_load_int32(dd, "min", &value) == 0); - assert(value == INT32_MIN || !"min"); - -- asprintf(&buf, "%"PRId32, INT32_MAX); -+ buf = g_strdup_printf("%"PRId32, INT32_MAX); - assert(buf != NULL); - - dd_save_text(dd, "max", buf); -- free(buf); -+ g_free(buf); - - assert(dd_load_int32(dd, "max", &value) == 0); - assert(value == INT32_MAX); - -- asprintf(&buf, "%lld", 1LL + INT32_MAX); -+ buf = g_strdup_printf("%lld", 1LL + INT32_MAX); - assert(buf != NULL); - - dd_save_text(dd, "above_max", buf); -- free(buf); -+ g_free(buf); - - assert(dd_load_int32(dd, "above_max", &value) == -ERANGE); - -@@ -1124,20 +1123,19 @@ int main(void) - assert(dd_load_uint32(dd, "min", &value) == 0); - assert(value == 0 || !"min"); - -- char *buf = NULL; -- asprintf(&buf, "%"PRIu32, UINT32_MAX); -+ char *buf = g_strdup_printf("%"PRIu32, UINT32_MAX); - assert(buf != NULL); - - dd_save_text(dd, "max", buf); -- free(buf); -+ g_free(buf); - assert(dd_load_uint32(dd, "max", &value) == 0); - assert(value == UINT32_MAX); - -- asprintf(&buf, "%lld", 1LL + UINT32_MAX); -+ buf = g_strdup_printf("%lld", 1LL + UINT32_MAX); - assert(buf != NULL); - - dd_save_text(dd, "above_max", buf); -- free(buf); -+ g_free(buf); - assert(dd_load_uint32(dd, "above_max", &value) == -ERANGE); - - dd_save_text(dd, "string_suffix", "123abc"); -@@ -1188,18 +1186,17 @@ int main(void) - dd_save_text(dd, "below_min", "-9223372036854775809"); - assert(dd_load_int64(dd, "below_min", &value) == -ERANGE); - -- char *buf = NULL; -- asprintf(&buf, "%"PRId64, INT64_MIN); -+ char *buf = g_strdup_printf("%"PRId64, INT64_MIN); - assert(buf != NULL); - dd_save_text(dd, "min", buf); -- free(buf); -+ g_free(buf); - assert(dd_load_int64(dd, "min", &value) == 0); - assert(value == INT64_MIN || !"min"); - -- asprintf(&buf, "%"PRId64, INT64_MAX); -+ buf = g_strdup_printf("%"PRId64, INT64_MAX); - assert(buf != NULL); - dd_save_text(dd, "max", buf); -- free(buf); -+ g_free(buf); - assert(dd_load_int64(dd, "max", &value) == 0); - assert(value == INT64_MAX); - -diff --git a/tests/event_config.at b/tests/event_config.at -index 5215475..a75baef 100644 ---- a/tests/event_config.at -+++ b/tests/event_config.at -@@ -41,7 +41,7 @@ TS_MAIN - - TS_ASSERT_FALSE(ec_restricted_access_enabled(ect)); - -- free(eot->eo_value); -+ g_free(eot->eo_value); - eot->eo_value = g_strdup("yes"); - - TS_ASSERT_TRUE(ec_restricted_access_enabled(ect)); -diff --git a/tests/helpers/testsuite.h b/tests/helpers/testsuite.h -index 04c2c2b..fc9bbc5 100644 ---- a/tests/helpers/testsuite.h -+++ b/tests/helpers/testsuite.h -@@ -377,7 +377,7 @@ FILE *g_testsuite_output_stream = 0; - char *ts_fd_contents = libreport_xmalloc_read(ts_pipefd[0], NULL); \ - close(ts_pipefd[0]); \ - TS_ASSERT_STRING_EQ(ts_fd_contents, expected, message); \ -- free(ts_fd_contents); \ -+ g_free(ts_fd_contents); \ - } while (0) - - #define TS_ASSERT_STDERR_EQ_BEGIN \ -diff --git a/tests/iso_date.at b/tests/iso_date.at -index 2ed0745..50b7127 100644 ---- a/tests/iso_date.at -+++ b/tests/iso_date.at -@@ -42,7 +42,7 @@ int main(void) - break; - } - assert((i != ARRAY_SIZE(local)) || !"None of attempts hit result date"); -- free(date); -+ g_free(date); - - time_t y2k = 946684800; - assert(string_cmp("2000-01-01-00:00:00", libreport_iso_date_string(&y2k))); -diff --git a/tests/make_description.at b/tests/make_description.at -index 0dd2b5d..6ff7b7b 100644 ---- a/tests/make_description.at -+++ b/tests/make_description.at -@@ -22,7 +22,7 @@ int main(int argc, char **argv) - assert(description != NULL || !"Returns NULL for empty problem data"); - assert(description[0] == '\0' || !"Returns non-empty description for empty problem data"); - -- free(description); -+ g_free(description); - - problem_data_add_text_noteditable(pd, FILENAME_REPORTED_TO, "Bugzilla: URL=https://bugzilla.redhat.com/1000000\n"); - -@@ -36,8 +36,8 @@ int main(int argc, char **argv) - assert(!"The description for a single Bugzilla URL does not match the expected description"); - } - -- free(description); -- free(expected); -+ g_free(description); -+ g_free(expected); - problem_data_free(pd); - - pd = problem_data_new(); -@@ -60,8 +60,8 @@ int main(int argc, char **argv) - assert(!"The description does not match the expected description"); - } - -- free(description); -- free(expected); -+ g_free(description); -+ g_free(expected); - problem_data_free(pd); - - pd = problem_data_new(); -@@ -73,7 +73,7 @@ int main(int argc, char **argv) - assert(description != NULL || !"Returns NULL for non empty problem data"); - assert(description[0] == '\0' || !"Returns non-empty description for problem data without any URL"); - -- free(description); -+ g_free(description); - problem_data_free(pd); - - pd = problem_data_new(); -@@ -109,8 +109,8 @@ int main(int argc, char **argv) - assert(!"The description does not match the expected description"); - } - -- free(expected); -- free(description); -+ g_free(expected); -+ g_free(description); - - const char *const backtrace = "Extremely long backtrace which does not make sense"; - problem_data_add(pd, FILENAME_BACKTRACE, backtrace, CD_FLAG_TXT | CD_FLAG_ISNOTEDITABLE); -@@ -142,8 +142,8 @@ int main(int argc, char **argv) - assert(!"The description does not match the expected description"); - } - -- free(expected); -- free(description); -+ g_free(expected); -+ g_free(description); - problem_data_free(pd); - - /* SHOW_URLS DID NOT BREAK THE OLD BEHAVIOUR */ -@@ -176,8 +176,8 @@ int main(int argc, char **argv) - assert(!"The description does not match the expected description"); - } - -- free(expected); -- free(description); -+ g_free(expected); -+ g_free(description); - problem_data_free(pd); - - return 0; -diff --git a/tests/problem_data.at b/tests/problem_data.at -index a7681a1..4d8bf00 100644 ---- a/tests/problem_data.at -+++ b/tests/problem_data.at -@@ -95,7 +95,7 @@ int main(int argc, char **argv) - assert(current_size == old_size); - } - { -- free(itm->content); -+ g_free(itm->content); - itm->content = NULL; - size_t current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE; - assert(problem_item_get_size(itm, ¤t_size) == 0); -diff --git a/tests/problem_report.at b/tests/problem_report.at -index b99f4b3..a7fdda3 100644 ---- a/tests/problem_report.at -+++ b/tests/problem_report.at -@@ -768,7 +768,7 @@ int main(int argc, char **argv) - abort(); - } - else { -- free(item->data); -+ g_free(item->data); - clone = g_list_delete_link(clone, item); - } - -diff --git a/tests/report_result.at b/tests/report_result.at -index bd59576..9ec19fb 100644 ---- a/tests/report_result.at -+++ b/tests/report_result.at -@@ -11,16 +11,16 @@ int main(void) - result = report_result_parse("Test: URL=https://retrace.fedoraproject.org WORKFLOW=workflow_FedoraCCpp MSG=Just a message!", 4); - field = report_result_get_label(result); - g_assert_cmpstr(field, ==, "Test"); -- free(field); -+ g_free(field); - field = report_result_get_url(result); - g_assert_cmpstr(field, ==, "https://retrace.fedoraproject.org"); -- free(field); -+ g_free(field); - field = report_result_get_workflow(result); - g_assert_cmpstr(field, ==, "workflow_FedoraCCpp"); -- free(field); -+ g_free(field); - field = report_result_get_message(result); - g_assert_cmpstr(field, ==, "Just a message!"); -- free(field); -+ g_free(field); - - return EXIT_SUCCESS; - } -diff --git a/tests/ureport.at b/tests/ureport.at -index b20cb19..7ac67dc 100644 ---- a/tests/ureport.at -+++ b/tests/ureport.at -@@ -70,11 +70,11 @@ int main(void) - struct ureport_server_config config; - libreport_ureport_server_config_init(&config); - -- config.ur_url = strdup("url"); -- config.ur_client_cert = strdup("cert"); -- config.ur_client_key = strdup("key"); -- config.ur_username = strdup("username"); -- config.ur_password = strdup("password"); -+ config.ur_url = g_strdup("url"); -+ config.ur_client_cert = g_strdup("cert"); -+ config.ur_client_key = g_strdup("key"); -+ config.ur_username = g_strdup("username"); -+ config.ur_password = g_strdup("password"); - - assert(strcmp(config.ur_url, "url") == 0); - assert(strcmp(config.ur_client_cert, "cert") == 0); -@@ -273,11 +273,11 @@ int main(void) - struct ureport_server_config config; - libreport_ureport_server_config_init(&config); - -- libreport_ureport_server_config_set_url(&config, strdup("url")); -+ libreport_ureport_server_config_set_url(&config, g_strdup("url")); - - assert(strcmp(config.ur_url, "url") == 0); - -- libreport_ureport_server_config_set_url(&config, strdup("next.url")); -+ libreport_ureport_server_config_set_url(&config, g_strdup("next.url")); - - assert(strcmp(config.ur_url, "next.url") == 0); - -@@ -305,14 +305,6 @@ AT_TESTFUN([libreport_ureport_server_config_set_client_auth], - #define TESTING_PYTHONPATH "../../ureport/" - #define WRONG_TESTING_PYTHONPATH "../../ureportxxxxxx/" - --char *my_strdup(const char *str) --{ -- if (str == NULL) -- return NULL; -- else -- return strdup(str); --} -- - void set_ureport_server_config(struct ureport_server_config *config, - const char *url, - bool ver, -@@ -321,12 +313,12 @@ void set_ureport_server_config(struct ureport_server_config *config, - const char *uname, - const char *passwd) - { -- config->ur_url = my_strdup(url); -+ config->ur_url = g_strdup(url); - config->ur_ssl_verify = ver; -- config->ur_client_cert = my_strdup(cert); -- config->ur_client_key = my_strdup(key); -- config->ur_username = my_strdup(uname); -- config->ur_password = my_strdup(passwd); -+ config->ur_client_cert = g_strdup(cert); -+ config->ur_client_key = g_strdup(key); -+ config->ur_username = g_strdup(uname); -+ config->ur_password = g_strdup(passwd); - - return; - } -@@ -558,7 +550,7 @@ int main(void) - struct ureport_server_config config; - libreport_ureport_server_config_init(&config); - -- g_autofree char *url = strdup("url"); -+ g_autofree char *url = g_strdup("url"); - libreport_ureport_server_config_set_url(&config, url); - - assert(libreport_ureport_server_response_from_reply(&ps, &config) == NULL); -@@ -643,7 +635,7 @@ int main(void) - - struct ureport_server_config config; - libreport_ureport_server_config_init(&config); -- libreport_ureport_server_config_set_url(&config, strdup("url")); -+ libreport_ureport_server_config_set_url(&config, g_strdup("url")); - - struct dump_dir *dd = dd_create("./test", (uid_t)-1L, DEFAULT_DUMP_DIR_MODE); - assert(dd != NULL); -@@ -668,7 +660,7 @@ int main(void) - /* not-reportable must not exist */ - assert(!dd_exist(dd, FILENAME_NOT_REPORTABLE)); - -- free(config.ur_url); -+ g_free(config.ur_url); - libreport_ureport_server_response_free(response); - dd_close(dd); - delete_dump_dir("./test"); -@@ -687,7 +679,7 @@ int main(void) - 'reporter': 'ABRT Server' } ] }"; - - libreport_ureport_server_config_init(&config); -- libreport_ureport_server_config_set_url(&config, strdup("url")); -+ libreport_ureport_server_config_set_url(&config, g_strdup("url")); - - dd = dd_create("./test", (uid_t)-1L, DEFAULT_DUMP_DIR_MODE); - assert(dd != NULL); -@@ -712,7 +704,7 @@ int main(void) - assert(strstr(not_reportable, "Your problem seems to be caused by solution_cause") != NULL); - - -- free(config.ur_url); -+ g_free(config.ur_url); - libreport_ureport_server_response_free(response); - dd_close(dd); - delete_dump_dir("./test"); -@@ -754,7 +746,7 @@ int main(void) - - struct ureport_server_config config; - libreport_ureport_server_config_init(&config); -- libreport_ureport_server_config_set_url(&config, strdup("url")); -+ libreport_ureport_server_config_set_url(&config, g_strdup("url")); - - struct ureport_server_response *response = libreport_ureport_server_response_from_reply(&ps, &config); - -@@ -765,7 +757,7 @@ int main(void) - - assert(strcmp(report_url, expect_report_url) == 0); - -- free(config.ur_url); -+ g_free(config.ur_url); - libreport_ureport_server_response_free(response); - - return 0; -@@ -886,11 +878,11 @@ int main(void) - char *json = ureport_json_attachment_new("data_bthash", "data_type", "data_data"); - assert(strcmp(json, "{ \"bthash\": \"data_bthash\", \"type\": \"data_type\", \"data\": \"data_data\" }") == 0); - -- free(json); -+ g_free(json); - json = ureport_json_attachment_new("", "", ""); - assert(strcmp(json, "{ \"bthash\": \"\", \"type\": \"\", \"data\": \"\" }") == 0); - -- free(json); -+ g_free(json); - return 0; - } - ]]) -@@ -960,7 +952,7 @@ int main(void) - /* no auth */ - char *ureport = libreport_ureport_from_dump_dir_ext("./test", NULL); - assert(strstr(ureport, "auth") == NULL); -- free(ureport); -+ g_free(ureport); - - /* auth */ - dd = dd_opendir("./test", 0); -@@ -980,7 +972,7 @@ int main(void) - ureport = libreport_ureport_from_dump_dir_ext("./test", &config.ur_prefs); - assert(strstr(ureport, "auth") != NULL); - assert(strstr(ureport, "\"hostname\": \"env_hostname\"") != NULL); -- free(ureport); -+ g_free(ureport); - - libreport_ureport_server_config_destroy(&config); - if (settings) -@@ -999,7 +991,7 @@ int main(void) - assert(strstr(ureport, "auth") != NULL); - assert(strstr(ureport, "\"hostname\": \"env_hostname\"") != NULL); - assert(strstr(ureport, "unknown") == NULL); -- free(ureport); -+ g_free(ureport); - - libreport_ureport_server_config_destroy(&config); - if (settings) -diff --git a/tests/uriparser.at b/tests/uriparser.at -index 0f31207..f4bd35b 100644 ---- a/tests/uriparser.at -+++ b/tests/uriparser.at -@@ -75,7 +75,7 @@ int test(int retval, const char *uri, const char *result, const char *scheme, co - else - { - e += !string_cmp(names[i], expected[i], outputs[i]); -- free(outputs[i]); -+ g_free(outputs[i]); - outputs[i] = (char *)0xDEADBEEF; - } - } -@@ -104,7 +104,7 @@ int test(int retval, const char *uri, const char *result, const char *scheme, co - } - - e += !string_cmp(names[0], result, outputs[0]); -- free(outputs[0]); -+ g_free(outputs[0]); - - return e; - } --- -1.8.3.1 - diff --git a/0002-changelog-Fix-links-to-commits.patch b/0002-changelog-Fix-links-to-commits.patch deleted file mode 100644 index 471fcd2438bf3f3b938fe53c04d23173f40dbc5d..0000000000000000000000000000000000000000 --- a/0002-changelog-Fix-links-to-commits.patch +++ /dev/null @@ -1,48 +0,0 @@ -From f99578c04accb449f8922aea7d47b7d62fbf92b1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mat=C4=9Bj=20Grabovsk=C3=BD?= -Date: Wed, 11 Aug 2021 14:11:55 +0200 -Subject: [PATCH] changelog: Fix links to commits - -Fix links to git commits in headings and add dates of last two releases. - -Signed-off-by: guojin17 ---- - CHANGELOG.md | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/CHANGELOG.md b/CHANGELOG.md -index c3946a0..7b6b0f3 100644 ---- a/CHANGELOG.md -+++ b/CHANGELOG.md -@@ -6,7 +6,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - - ## [Unreleased] - --## [2.15.2] -+## [2.15.2] - 2021-06-02 - ### Changed - - Use GLib for computing SHA-1 digests - -@@ -16,7 +16,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - ### Fixed - - Memory management issues - --## [2.15.1] -+## [2.15.1] - 2021-05-04 - ### Added - - ignored_words: add more "key" variations - - Add support for excluding whole elements from search for sensitive words -@@ -275,7 +275,9 @@ files. - functions reporting errors through errno. - - --[Unreleased]: https://github.com/abrt/libreport/compare/2.15.0...HEAD -+[Unreleased]: https://github.com/abrt/libreport/compare/2.15.2...HEAD -+[2.15.2]: https://github.com/abrt/libreport/compare/2.15.1...2.15.2 -+[2.15.1]: https://github.com/abrt/libreport/compare/2.15.0...2.15.1 - [2.15.0]: https://github.com/abrt/libreport/compare/2.14.0...2.15.0 - [2.14.0]: https://github.com/abrt/libreport/compare/2.13.1...2.14.0 - [2.13.1]: https://github.com/abrt/libreport/compare/2.13.0...2.13.1 --- -1.8.3.1 - diff --git a/0003-Avoid-direct-use-of-libproxy.patch b/0003-Avoid-direct-use-of-libproxy.patch deleted file mode 100644 index 5a786af5fe0d1adc3d8cb606c4b0c0bd1b07e64d..0000000000000000000000000000000000000000 --- a/0003-Avoid-direct-use-of-libproxy.patch +++ /dev/null @@ -1,121 +0,0 @@ -From dbcc94e02a88974967495303b69e487713d2cfdb Mon Sep 17 00:00:00 2001 -From: Michael Catanzaro -Date: Wed, 18 Aug 2021 17:03:34 -0500 -Subject: [PATCH] Avoid direct use of libproxy - -GProxyResolver has been around since GLib 2.26. There's no reason to use -libproxy directly anymore. GProxyResolver will call into libproxy if -GLib thinks it's a good idea to do so, except in distributions that are -configured to build glib-networking without libproxy support. - -Note that the existing code in get_proxy_list() was unsafely using -g_autofree and g_free() to free the memory allocated by libproxy. With -the switch to GProxyResolver, the memory is actually allocated by GLib -now, so this is now actually correct to do. - -Let's also initialize l = NULL just in case some weird bug results in a -non-NULL strv of zero length being returned. It should never happen, but -we would wind up using l uninitialize did it did. - -Signed-off-by: guojin17 ---- - configure.ac | 3 --- - src/lib/curl.c | 2 +- - src/lib/proxies.c | 37 +++++++++++-------------------------- - 3 files changed, 12 insertions(+), 30 deletions(-) - -diff --git a/configure.ac b/configure.ac -index fa97fa7..3e761e9 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -224,9 +224,6 @@ PKG_CHECK_MODULES([GIO], [ - PKG_CHECK_MODULES([GOBJECT], [gobject-2.0]) - PKG_CHECK_MODULES([LIBXML], [libxml-2.0]) - PKG_CHECK_MODULES([CURL], [libcurl]) --PKG_CHECK_MODULES([PROXY], [libproxy-1.0], [ -- AC_DEFINE([HAVE_PROXY], [1], [Use libproxy]) --], [:]) - PKG_CHECK_MODULES([SATYR], [satyr]) - PKG_CHECK_MODULES([JOURNAL], [libsystemd]) - PKG_CHECK_MODULES([AUGEAS], [augeas]) -diff --git a/src/lib/curl.c b/src/lib/curl.c -index 9b7920a..78080bc 100644 ---- a/src/lib/curl.c -+++ b/src/lib/curl.c -@@ -102,7 +102,7 @@ CURLcode curl_easy_perform_with_proxy(CURL *handle, const char *url) - curl_err = curl_easy_perform(handle); - } - -- g_list_free_full(proxy_list, free); -+ g_list_free_full(proxy_list, g_free); - - return curl_err; - } -diff --git a/src/lib/proxies.c b/src/lib/proxies.c -index 3b46d9d..e60ef46 100644 ---- a/src/lib/proxies.c -+++ b/src/lib/proxies.c -@@ -19,49 +19,34 @@ - #include "internal_libreport.h" - #include "proxies.h" - --#ifdef HAVE_PROXY --#include -- --static pxProxyFactory *px_factory; -+#include - - GList *get_proxy_list(const char *url) - { - int i; -- GList *l; -- g_autofree char **proxies = NULL; -+ GList *l = NULL; -+ GProxyResolver *resolver; -+ g_auto(GStrv) proxies = NULL; -+ g_autoptr(GError) error = NULL; - -- if (!px_factory) -- { -- px_factory = px_proxy_factory_new(); -- if (!px_factory) -- return NULL; -- } -+ resolver = g_proxy_resolver_get_default(); - -- /* Cast to char * is needed with libproxy versions before 0.4.0 */ -- proxies = px_proxy_factory_get_proxies(px_factory, (char *)url); -+ proxies = g_proxy_resolver_lookup(resolver, url, NULL, &error); - if (!proxies) -+ { -+ log_warning("Failed to perform proxy lookup for %s: %s", url, error->message); - return NULL; -+ } - - for (i = 0, l = NULL; proxies[i]; i++) -- l = g_list_append(l, proxies[i]); -+ l = g_list_append(l, g_steal_pointer(&proxies[i])); - - /* Don't set proxy if the list contains just "direct://" */ - if (l && !g_list_next(l) && !strcmp(l->data, "direct://")) - { -- g_free(l->data); - g_list_free(l); - l = NULL; - } - - return l; - } -- --#else -- --GList *get_proxy_list(const char *url) --{ -- /* Without libproxy just return an empty list */ -- return NULL; --} -- --#endif --- -1.8.3.1 - diff --git a/libreport-2.15.2.tar.gz b/libreport-2.15.2.tar.gz deleted file mode 100644 index 73cce77e3f78c64ab448c34ccc72c39cde846d31..0000000000000000000000000000000000000000 Binary files a/libreport-2.15.2.tar.gz and /dev/null differ diff --git a/libreport-2.17.10.tar.gz b/libreport-2.17.10.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..e51077a7c378a3717210969aa3539f63f0f037c2 Binary files /dev/null and b/libreport-2.17.10.tar.gz differ diff --git a/libreport.spec b/libreport.spec index 1fec2abe992af6c362ebe100c994e4d8b4959d5a..f4ee31d58d62540b83585b35dd2508ec0fe41540 100644 --- a/libreport.spec +++ b/libreport.spec @@ -1,17 +1,14 @@ %define _unpackaged_files_terminate_build 0 Name: libreport -Version: 2.15.2 -Release: 7 +Version: 2.17.10 +Release: 1 License: GPLv2+ Summary: Generic library for reporting various problems URL: https://abrt.readthedocs.org/ Source: https://github.com/abrt/%{name}/archive/%{version}/%{name}-%{version}.tar.gz Patch9000: fix-bug-delete-gtk-deprecation-warnings.patch -Patch9001: 0001-Use-g_free-for-GLib-alloc-d-memory.patch -Patch9002: 0002-changelog-Fix-links-to-commits.patch -Patch9003: 0003-Avoid-direct-use-of-libproxy.patch BuildRequires: dbus-devel gtk3-devel curl-devel desktop-file-utils python3-devel BuildRequires: gettext libxml2-devel libtar-devel intltool libtool texinfo asciidoc xmlto @@ -337,6 +334,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{_mandir}/man5/bugzilla_formatdup_anaconda.conf.5.* %changelog +* Thu Jun 29 2023 dillon chen - 2.17.10-1 +- update version to 2.17.10 + * Tue Jun 27 2023 zhoupengcheng - 2.15.2-7 - Type:bugfix - CVE:NA