Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiovanni Panozzo <giovanni@panozzo.it>2022-11-07 00:31:35 +0300
committerGiovanni Panozzo <giovanni@panozzo.it>2022-11-07 00:31:35 +0300
commit5c610f6bc2d6980107ba6356fee30d778aae48cc (patch)
treeb7ecbaaf1ebbecdc69fcaaccb00da813598692fd
parentbd844208dcee9b1b259b1eb892cc9534eea92c30 (diff)
Fix memory leaks
-rw-r--r--src/remmina_file.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/remmina_file.c b/src/remmina_file.c
index 1e036a326..b2b6a3e77 100644
--- a/src/remmina_file.c
+++ b/src/remmina_file.c
@@ -197,9 +197,13 @@ void remmina_file_set_statefile(RemminaFile *remminafile)
gchar *basename = g_path_get_basename(remminafile->filename);
gchar *cachedir = g_build_path("/", g_get_user_cache_dir(), "remmina", NULL);
- GString *fname = g_string_new(g_strdup(basename));
+ GString *fname = g_string_new(basename);
remminafile->statefile = g_strdup_printf("%s/%s.state", cachedir, fname->str);
+
+ g_free(cachedir);
+ g_string_free(fname, TRUE);
+ g_free(basename);
}
const gchar *
@@ -447,8 +451,10 @@ remmina_file_load(const gchar *filename)
}
g_free(resolution_str);
} else {
- remmina_file_set_string(remminafile, key,
- g_key_file_get_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, NULL));
+ gchar *value;
+ value = g_key_file_get_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, NULL);
+ remmina_file_set_string(remminafile, key, value);
+ g_free(value);
}
}
}
@@ -464,6 +470,9 @@ void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, con
{
TRACE_CALL(__func__);
+ /* Note: setting and value are copied on the heap, so it is responsibility of the caller
+ * to deallocate them when returning from remmina_file_set_string() if needed */
+
if (!remmina_masterthread_exec_is_main_thread()) {
/* Allow the execution of this function from a non main thread
* (plugins needs it to have user credentials)*/
@@ -1027,6 +1036,7 @@ remmina_file_get_datetime(RemminaFile *remminafile)
struct timeval tv;
struct tm *ptm;
char time_string[256];
+ gchar *tmps;
guint64 mtime;
@@ -1053,10 +1063,14 @@ remmina_file_get_datetime(RemminaFile *remminafile)
if (last_success) {
//REMMINA_DEBUG ("Last success is %s", last_success);
GDateTime *dt;
- dt = g_date_time_new_from_iso8601(g_strconcat(last_success, "T00:00:00Z", NULL), NULL);
+ tmps = g_strconcat(last_success, "T00:00:00Z", NULL);
+ dt = g_date_time_new_from_iso8601(tmps, NULL);
+ g_free(tmps);
if (dt) {
//REMMINA_DEBUG("Converting last_success");
- mtime = g_ascii_strtoull(g_date_time_format(dt, "%s"), NULL, 10);
+ tmps = g_date_time_format(dt, "%s");
+ mtime = g_ascii_strtoull(tmps, NULL, 10);
+ g_free(tmps);
g_date_time_unref(dt);
} else {
//REMMINA_DEBUG("dt was null");