Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save kcozens/5214302 to your computer and use it in GitHub Desktop.
Save kcozens/5214302 to your computer and use it in GitHub Desktop.
Patch to fix segmentation fault crashes in Remmina.
From 7022d6f5d177ad29aa7d449d269d51ef5e34e6d5 Mon Sep 17 00:00:00 2001
From: Kevin Cozens <kevin@ve3syb.ca>
Date: Thu, 21 Mar 2013 13:35:58 -0400
Subject: [PATCH] Don't seg fault if no perms to read .remmina files, or if
file is corrupt. Fixed minor memory leak.
---
remmina/src/remmina_applet_menu.c | 2 ++
remmina/src/remmina_applet_menu_item.c | 5 ++++-
remmina/src/remmina_file_manager.c | 2 ++
3 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/remmina/src/remmina_applet_menu.c b/remmina/src/remmina_applet_menu.c
index f5db74d..1e47102 100644
--- a/remmina/src/remmina_applet_menu.c
+++ b/remmina/src/remmina_applet_menu.c
@@ -252,6 +252,8 @@ void remmina_applet_menu_populate(RemminaAppletMenu *menu)
g_snprintf(filename, sizeof(filename), "%s/%s", dirname, name);
menuitem = remmina_applet_menu_item_new(REMMINA_APPLET_MENU_ITEM_FILE, filename);
+ if (menuitem == NULL)
+ continue;
remmina_applet_menu_add_item(menu, REMMINA_APPLET_MENU_ITEM(menuitem));
gtk_widget_show(menuitem);
}
diff --git a/remmina/src/remmina_applet_menu_item.c b/remmina/src/remmina_applet_menu_item.c
index abb9882..7bb086c 100644
--- a/remmina/src/remmina_applet_menu_item.c
+++ b/remmina/src/remmina_applet_menu_item.c
@@ -75,7 +75,10 @@ GtkWidget* remmina_applet_menu_item_new(RemminaAppletMenuItemType item_type, ...
gkeyfile = g_key_file_new();
if (!g_key_file_load_from_file(gkeyfile, item->filename, G_KEY_FILE_NONE, NULL))
+ {
+ g_key_file_free(gkeyfile);
return NULL;
+ }
item->name = g_key_file_get_string(gkeyfile, "remmina", "name", NULL);
item->group = g_key_file_get_string(gkeyfile, "remmina", "group", NULL);
@@ -120,7 +123,7 @@ GtkWidget* remmina_applet_menu_item_new(RemminaAppletMenuItemType item_type, ...
{
iconname = (item->ssh_enabled ? "remmina-rdp-ssh" : "remmina-rdp");
}
- else if (strncmp (item->protocol, "VNC", 3) == 0)
+ else if (item->protocol != NULL && strncmp (item->protocol, "VNC", 3) == 0)
{
iconname = (item->ssh_enabled ? "remmina-vnc-ssh" : "remmina-vnc");
}
diff --git a/remmina/src/remmina_file_manager.c b/remmina/src/remmina_file_manager.c
index 2741962..dd8e129 100644
--- a/remmina/src/remmina_file_manager.c
+++ b/remmina/src/remmina_file_manager.c
@@ -89,6 +89,8 @@ gchar* remmina_file_manager_get_groups(void)
continue;
g_snprintf(filename, MAX_PATH_LEN, "%s/%s", dirname, name);
remminafile = remmina_file_load(filename);
+ if (remminafile == NULL)
+ continue;
group = remmina_file_get_string(remminafile, "group");
if (group && remmina_string_array_find(array, group) < 0)
{
--
1.7.10.4
@kcozens
Copy link
Author

kcozens commented Mar 21, 2013

This patch fixes three possible segmentation faults and one memory leak in the git master version of Remmina (hash code 948de6fb).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment