Skip to content

Commit 1a5f9d4

Browse files
committed
Fix mem leaks and uninitialized var
1 parent 29bc792 commit 1a5f9d4

3 files changed

Lines changed: 18 additions & 24 deletions

File tree

remmina/src/remmina_stats.c

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -253,34 +253,28 @@ JsonNode *remmina_stats_get_os_info()
253253
kernel_name = g_strdup_printf("%s", remmina_utils_get_kernel_name());
254254
if (!kernel_name || kernel_name[0] == '\0') {
255255
g_free(kernel_name);
256-
kernel_name = "n/a";
256+
kernel_name = g_strdup("n/a");
257257
}
258258
json_builder_add_string_value(b, kernel_name);
259-
if (!kernel_name || kernel_name[0] == '\0') {
260-
g_free(kernel_name);
261-
}
259+
g_free(kernel_name);
262260

263261
json_builder_set_member_name(b, "kernel_release");
264262
kernel_release = g_strdup_printf("%s", remmina_utils_get_kernel_release());
265263
if (!kernel_release || kernel_release[0] == '\0') {
266264
g_free(kernel_release);
267-
kernel_release = "n/a";
265+
kernel_release = g_strdup("n/a");
268266
}
269267
json_builder_add_string_value(b, kernel_release);
270-
if (!kernel_release || kernel_release[0] == '\0') {
271-
g_free(kernel_release);
272-
}
268+
g_free(kernel_release);
273269

274270
json_builder_set_member_name(b, "kernel_arch");
275271
kernel_arch = g_strdup_printf("%s", remmina_utils_get_kernel_arch());
276272
if (!kernel_arch || kernel_arch[0] == '\0') {
277273
g_free(kernel_arch);
278-
kernel_arch = "n/a";
274+
kernel_arch = g_strdup("n/a");
279275
}
280276
json_builder_add_string_value(b, kernel_arch);
281-
if (!kernel_arch || kernel_arch[0] == '\0') {
282-
g_free(kernel_arch);
283-
}
277+
g_free(kernel_arch);
284278

285279
id = remmina_utils_get_lsb_id();
286280
if (!id || id[0] == '\0') {
@@ -294,6 +288,7 @@ JsonNode *remmina_stats_get_os_info()
294288
description = remmina_utils_get_lsb_description();
295289
if (!description || description[0] == '\0') {
296290
g_free(description);
291+
description = g_strdup("n/a");
297292
}
298293
json_builder_set_member_name(b, "lsb_distro_description");
299294
json_builder_add_string_value(b, description);
@@ -319,7 +314,7 @@ JsonNode *remmina_stats_get_os_info()
319314

320315
etc_release = remmina_utils_get_etc_release();
321316
if (!etc_release || etc_release[0] == '\0') {
322-
g_free(description);
317+
g_free(etc_release);
323318
etc_release = g_strdup("n/a");
324319
}
325320
json_builder_set_member_name(b, "etc_release");
@@ -538,7 +533,7 @@ static void remmina_profiles_get_data(RemminaFile *remminafile, gpointer user_da
538533
pdata->protocol = remmina_file_get_string(remminafile, "protocol");
539534
pdata->pdatestr = remmina_file_get_string(remminafile, "last_success");
540535

541-
dd = NULL;
536+
ds = dd = NULL;
542537
if (pdata->pdatestr && pdata->pdatestr[0] != '\0' && strlen(pdata->pdatestr) >= 6) {
543538
dyear = g_strdup_printf("%.4s", pdata->pdatestr);
544539
dmonth = g_strdup_printf("%.2s", pdata->pdatestr + 4);

remmina/src/remmina_stats_sender.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -193,10 +193,10 @@ static gboolean remmina_stats_collector_done(gpointer data)
193193

194194
g = json_generator_new();
195195
json_generator_set_root(g, n);
196+
json_node_unref(n);
196197
unenc_s = json_generator_to_data(g, NULL); // unenc_s=serialized stats
197198
remmina_log_printf("STATS upload: JSON data%s\n", unenc_s);
198199
g_object_unref(g);
199-
json_node_unref(n);
200200

201201
/* Now encrypt "s" with remminastats public key */
202202

@@ -245,8 +245,6 @@ static gboolean remmina_stats_collector_done(gpointer data)
245245
json_generator_set_root(g, n);
246246
enc_s = json_generator_to_data(g, NULL); // unenc_s=serialized stats
247247
g_object_unref(g);
248-
json_node_unref(n);
249-
250248

251249
ss = soup_session_new();
252250
msg = soup_message_new("POST", PERIODIC_UPLOAD_URL);
@@ -257,6 +255,7 @@ static gboolean remmina_stats_collector_done(gpointer data)
257255
remmina_log_printf("STATS upload: Starting upload to url %s\n", PERIODIC_UPLOAD_URL);
258256
}
259257

258+
json_node_unref(n);
260259
g_free(data);
261260

262261
return G_SOURCE_REMOVE;
@@ -291,7 +290,6 @@ void remmina_stats_sender_send(gboolean show_only)
291290

292291
g_thread_new("stats_collector", remmina_stats_collector, (gpointer)sctdata);
293292

294-
295293
}
296294

297295
gboolean remmina_stat_sender_can_send()

remmina/src/remmina_utils.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -243,10 +243,10 @@ gchar *remmina_utils_string_strip(const gchar *s)
243243
* @param filename The file path of a Linux distribution release file.
244244
* @param distroSize The size of the distribition name.
245245
* @param distro The full distro name.
246-
* @return Returns distro information verbatium from /etc/xxx-release (distro).
246+
* @return Returns a string containing distro information verbatium from /etc/xxx-release (distro). Use g_free to free the string.
247247
*
248248
*/
249-
const gchar* remmina_utils_read_distrofile(gchar *filename)
249+
static gchar* remmina_utils_read_distrofile(gchar *filename)
250250
{
251251
TRACE_CALL(__func__);
252252
gsize file_sz;
@@ -390,19 +390,20 @@ gchar* remmina_utils_get_etc_release()
390390
{
391391
TRACE_CALL(__func__);
392392
gchar *distro_desc = NULL;
393+
gchar *s;
393394
gint i;
394395

395396
for (i = 0; distroArray[i].filename != NULL; i++) {
396397
g_debug("%s: File %s\n", __func__, distroArray[i].filename);
397-
distro_desc = g_strdup(remmina_utils_read_distrofile(
398-
distroArray[i].filename));
399-
398+
distro_desc = remmina_utils_read_distrofile(distroArray[i].filename);
400399
if (distro_desc && distro_desc[0] != '\0') {
401400
g_debug("%s: Distro description %s\n", __func__, distro_desc);
402401
break;
403402
}
404403
}
405-
return remmina_utils_string_strip(distro_desc);
404+
s = remmina_utils_string_strip(distro_desc);
405+
g_free(distro_desc);
406+
return s;
406407
}
407408

408409
/**

0 commit comments

Comments
 (0)