summaryrefslogtreecommitdiff
diff options
authorRobert Ancell <robert.ancell@canonical.com>2014-03-07 14:24:20 +1300
committerRobert Ancell <robert.ancell@canonical.com>2014-03-07 14:24:20 +1300
commitaa566f4ffed84a50f7d40102a96d389aed24af48 (patch)
treeb27cf58bdd30823cee4b2881bd224f52d305b4e2
parent97e086b34f48cb8adb5a72fa02b3b7e25d707e75 (diff)
Fix small leaks detected by valgrind
-rw-r--r--liblightdm-gobject/user.c4
-rw-r--r--src/configuration.c13
-rw-r--r--src/display-server.c15
-rw-r--r--src/dmrc.c4
-rw-r--r--src/xserver-local.c10
5 files changed, 41 insertions, 5 deletions
diff --git a/liblightdm-gobject/user.c b/liblightdm-gobject/user.c
index 3b0741ff..701ea00d 100644
--- a/liblightdm-gobject/user.c
+++ b/liblightdm-gobject/user.c
@@ -1508,9 +1508,11 @@ lightdm_user_finalize (GObject *object)
g_free (priv->home_directory);
g_free (priv->image);
g_free (priv->background);
- g_strfreev (priv->layouts);
if (priv->dmrc_file)
g_key_file_free (priv->dmrc_file);
+ g_free (priv->language);
+ g_strfreev (priv->layouts);
+ g_free (priv->session);
}
static void
diff --git a/src/configuration.c b/src/configuration.c
index e3b15df8..52be58d0 100644
--- a/src/configuration.c
+++ b/src/configuration.c
@@ -37,7 +37,10 @@ config_load_from_file (Configuration *config, const gchar *path, GError **error)
key_file = g_key_file_new ();
if (!g_key_file_load_from_file (key_file, path, G_KEY_FILE_NONE, error))
+ {
+ g_key_file_free (key_file);
return FALSE;
+ }
groups = g_key_file_get_groups (key_file, NULL);
for (i = 0; groups[i]; i++)
@@ -50,12 +53,20 @@ config_load_from_file (Configuration *config, const gchar *path, GError **error)
break;
for (j = 0; keys[j]; j++)
- g_key_file_set_value (config->priv->key_file, groups[i], keys[j], g_key_file_get_value (key_file, groups[i], keys[j], NULL));
+ {
+ gchar *value;
+
+ value = g_key_file_get_value (key_file, groups[i], keys[j], NULL);
+ g_key_file_set_value (config->priv->key_file, groups[i], keys[j], value);
+ g_free (value);
+ }
g_strfreev (keys);
}
g_strfreev (groups);
+ g_key_file_free (key_file);
+
return TRUE;
}
diff --git a/src/display-server.c b/src/display-server.c
index 28110ef6..2ad9dd38 100644
--- a/src/display-server.c
+++ b/src/display-server.c
@@ -116,11 +116,26 @@ display_server_init (DisplayServer *server)
}
static void
+display_server_finalize (GObject *object)
+{
+ DisplayServer *self;
+
+ self = DISPLAY_SERVER (object);
+
+ g_free (self->priv->name);
+
+ G_OBJECT_CLASS (display_server_parent_class)->finalize (object);
+}
+
+static void
display_server_class_init (DisplayServerClass *klass)
{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
klass->start = display_server_real_start;
klass->stop = display_server_real_stop;
klass->get_is_stopped = display_server_real_get_is_stopped;
+ object_class->finalize = display_server_finalize;
g_type_class_add_private (klass, sizeof (DisplayServerPrivate));
diff --git a/src/dmrc.c b/src/dmrc.c
index da8b5126..4d1e3e0c 100644
--- a/src/dmrc.c
+++ b/src/dmrc.c
@@ -108,13 +108,15 @@ dmrc_save (GKeyFile *dmrc_file, const gchar *username)
cache_dir = config_get_string (config_get_instance (), "LightDM", "cache-directory");
dmrc_cache_dir = g_build_filename (cache_dir, "dmrc", NULL);
g_mkdir_with_parents (dmrc_cache_dir, 0700);
+ g_free (cache_dir);
filename = g_strdup_printf ("%s.dmrc", username);
path = g_build_filename (dmrc_cache_dir, filename, NULL);
g_file_set_contents (path, data, length, NULL);
- g_free (dmrc_cache_dir);
+ g_free (data);
g_free (path);
g_free (filename);
+ g_free (dmrc_cache_dir);
g_object_unref (user);
}
diff --git a/src/xserver-local.c b/src/xserver-local.c
index 210d231e..13d8ad05 100644
--- a/src/xserver-local.c
+++ b/src/xserver-local.c
@@ -113,7 +113,7 @@ xserver_local_release_display_number (guint display_number)
guint number = GPOINTER_TO_UINT (link->data);
if (number == display_number)
{
- display_numbers = g_list_remove_link (display_numbers, link);
+ display_numbers = g_list_delete_link (display_numbers, link);
return;
}
}
@@ -427,7 +427,13 @@ xserver_local_start (DisplayServer *display_server)
gethostname (hostname, 1024);
number = g_strdup_printf ("%d", xserver_get_display_number (XSERVER (server)));
if (!server->priv->xdmcp_key)
- xserver_set_authority (XSERVER (server), xauth_new_cookie (XAUTH_FAMILY_LOCAL, (guint8*) hostname, strlen (hostname), number));
+ {
+ XAuthority *cookie;
+
+ cookie = xauth_new_cookie (XAUTH_FAMILY_LOCAL, (guint8*) hostname, strlen (hostname), number);
+ xserver_set_authority (XSERVER (server), cookie);
+ g_object_unref (cookie);
+ }
g_free (number);
write_authority_file (server);
if (server->priv->authority_file)