Fix various memory leaks.
authorMiloslav Trmač <mitr@redhat.com>
Sat, 13 Apr 2013 01:19:17 +0000 (03:19 +0200)
committerColin Walters <walters@verbum.org>
Mon, 15 Apr 2013 12:17:44 +0000 (08:17 -0400)
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

src/polkitbackend/polkitbackendactionpool.c
src/polkitbackend/polkitbackendjsauthority.c
test/mocklibc/src/netgroup.c
test/polkitbackend/test-polkitbackendjsauthority.c

index 0af0010..bc14381 100644 (file)
@@ -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:
index f66f436..6abea0a 100644 (file)
@@ -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;
 
index f2ee857..bc99555 100644 (file)
@@ -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);
index cc7b15f..a4de6b1 100644 (file)
@@ -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);