Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save goodwin/5704952 to your computer and use it in GitHub Desktop.
Save goodwin/5704952 to your computer and use it in GitHub Desktop.
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment