summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiloslav Trmač <mitr@redhat.com>2013-04-13 03:19:17 +0200
committerColin Walters <walters@verbum.org>2013-04-15 08:17:44 -0400
commit63ee649bd14c5dfa7985840061097bbac01ab721 (patch)
tree99b951038ea14056d4c50c9e9d5a7eec172f1ee4
parent00dd36e41f95a37f61a99be74cc172c05a288e86 (diff)
downloadpolkit-63ee649bd14c5dfa7985840061097bbac01ab721.tar.gz
Fix various memory leaks.
The XML_ParserCreate_MM one was found by Florian Weimer in https://bugzilla.redhat.com/show_bug.cgi?id=888728 . This should cover everything found by valgrind on the JS authority test, augmented with a call to polkit_backend_authority_enumerate_actions() to verify the XML_ParserCreate_MM case. https://bugs.freedesktop.org/show_bug.cgi?id=63492
-rw-r--r--src/polkitbackend/polkitbackendactionpool.c2
-rw-r--r--src/polkitbackend/polkitbackendjsauthority.c3
-rw-r--r--test/mocklibc/src/netgroup.c5
-rw-r--r--test/polkitbackend/test-polkitbackendjsauthority.c2
4 files changed, 9 insertions, 3 deletions
diff --git a/src/polkitbackend/polkitbackendactionpool.c b/src/polkitbackend/polkitbackendactionpool.c
index 0af0010..bc14381 100644
--- a/src/polkitbackend/polkitbackendactionpool.c
+++ b/src/polkitbackend/polkitbackendactionpool.c
@@ -1051,7 +1051,6 @@ process_policy_file (PolkitBackendActionPool *pool,
pd.pool = pool;
- pd.parser = XML_ParserCreate_MM (NULL, NULL, NULL);
pd.parser = XML_ParserCreate (NULL);
pd.stack_depth = 0;
XML_SetUserData (pd.parser, &pd);
@@ -1084,6 +1083,7 @@ process_policy_file (PolkitBackendActionPool *pool,
XML_ParserFree (pd.parser);
+ pd_unref_data (&pd);
return TRUE;
error:
diff --git a/src/polkitbackend/polkitbackendjsauthority.c b/src/polkitbackend/polkitbackendjsauthority.c
index f66f436..6abea0a 100644
--- a/src/polkitbackend/polkitbackendjsauthority.c
+++ b/src/polkitbackend/polkitbackendjsauthority.c
@@ -507,6 +507,7 @@ setup_file_monitors (PolkitBackendJsAuthority *authority)
G_FILE_MONITOR_NONE,
NULL,
&error);
+ g_object_unref (file);
if (monitor == NULL)
{
g_warning ("Error monitoring directory %s: %s",
@@ -995,7 +996,7 @@ action_and_details_to_jsval (PolkitBackendJsAuthority *authority,
set_property_str (authority, obj, key, value);
g_free (key);
}
- g_free (keys);
+ g_strfreev (keys);
ret = TRUE;
diff --git a/test/mocklibc/src/netgroup.c b/test/mocklibc/src/netgroup.c
index f2ee857..bc99555 100644
--- a/test/mocklibc/src/netgroup.c
+++ b/test/mocklibc/src/netgroup.c
@@ -122,7 +122,10 @@ struct netgroup *netgroup_parse_all() {
char * line = NULL;
ssize_t line_size = getline(&line, &line_alloc, stream);
if (line_size == -1)
- break;
+ {
+ free(line);
+ break;
+ }
struct netgroup *nextgroup = netgroup_parse_line(line);
free(line);
diff --git a/test/polkitbackend/test-polkitbackendjsauthority.c b/test/polkitbackend/test-polkitbackendjsauthority.c
index cc7b15f..a4de6b1 100644
--- a/test/polkitbackend/test-polkitbackendjsauthority.c
+++ b/test/polkitbackend/test-polkitbackendjsauthority.c
@@ -104,6 +104,7 @@ test_get_admin_identities_for_action_id (const gchar *action_id,
g_assert (expected_admins[n] == NULL);
g_list_free_full (admin_identities, g_object_unref);
+ g_clear_object (&details);
g_clear_object (&user_for_subject);
g_clear_object (&subject);
g_clear_object (&caller);
@@ -374,6 +375,7 @@ rules_test_func (gconstpointer user_data)
POLKIT_IMPLICIT_AUTHORIZATION_UNKNOWN);
g_assert_cmpint (result, ==, tc->expected_result);
+ g_clear_object (&details);
g_clear_object (&user_for_subject);
g_clear_object (&subject);
g_clear_object (&caller);