]> granicus.if.org Git - p11-kit/commitdiff
Fix memory leaks reported by 'make leakcheck'
authorStef Walter <stefw@gnome.org>
Wed, 20 Mar 2013 21:20:25 +0000 (22:20 +0100)
committerStef Walter <stefw@gnome.org>
Wed, 20 Mar 2013 21:22:30 +0000 (22:22 +0100)
22 files changed:
common/mock.c
common/pem.c
common/tests/test-hash.c
common/tests/test-utf8.c
common/tests/test-x509.c
p11-kit/iter.c
p11-kit/tests/pin-test.c
p11-kit/tests/test-iter.c
p11-kit/tests/test-modules.c
p11-kit/uri.c
tools/extract-openssl.c
tools/tests/test-openssl.c
tools/tests/test-pem.c
tools/tests/test-save.c
tools/tests/test-x509.c
trust/builder.c
trust/index.c
trust/module.c
trust/session.c
trust/tests/test-builder.c
trust/tests/test-index.c
trust/tests/test-module.c

index 3ba3085df948b23c9d3f2d8ea74592ae6891ed0d..9d6c96017b834ac8edef59725d4462e361726da6 100644 (file)
@@ -119,8 +119,10 @@ static void
 free_session (void *data)
 {
        Session *sess = (Session *)data;
-       if (sess)
+       if (sess) {
                p11_dict_free (sess->objects);
+               p11_array_free (sess->matches);
+       }
        free (sess);
 }
 
index b3c6acdbf8f498ec4113209adc17987c769a7ade..b0625efb2a992be46640d78bba65fbdc7694ea24 100644 (file)
@@ -227,6 +227,7 @@ p11_pem_parse (const char *data,
                                if (sink != NULL)
                                        (sink) (type, decoded, n_decoded, user_data);
                                ++nfound;
+                               free (decoded);
                        }
                }
 
index d6d79905e0bb2fa4f212d90c725bc8c9bfc87838..c8694e178484b5f3ac90ab4319c72a1c2c35ffc3 100644 (file)
@@ -89,6 +89,8 @@ test_sha1_long (CuTest *cu)
 
        p11_hash_sha1 (checksum, input, 1000000, NULL);
        CuAssertTrue (cu, memcmp (expected, checksum, P11_HASH_SHA1_LEN) == 0);
+
+       free (input);
 }
 
 const char *md5_input[] = {
index d34f5971f80b71d9aa7ba7a6069a05891cf5c3ca..ed13fa2283d37238766637fc89f06c6991247825 100644 (file)
@@ -38,6 +38,7 @@
 #include "utf8.h"
 
 #include <stdio.h>
+#include <stdlib.h>
 
 #define ELEMS(x) (sizeof (x) / sizeof (x[0]))
 
@@ -74,6 +75,7 @@ test_ucs2be (CuTest *cu)
 
                CuAssertIntEquals (cu, fixtures[i].output_len, length);
                CuAssertStrEquals (cu, fixtures[i].output, output);
+               free (output);
        }
 }
 
@@ -146,6 +148,8 @@ test_ucs4be (CuTest *cu)
 
                CuAssertIntEquals (cu, fixtures[i].output_len, length);
                CuAssertStrEquals (cu, fixtures[i].output, output);
+
+               free (output);
        }
 }
 
index 08c269d7d53d947ca92f6a8ed3cf70ff472e714e..2596c9cfbbe2db672c8d8d44adafccbd71838c45 100644 (file)
@@ -397,6 +397,7 @@ test_directory_string (CuTest *tc)
 
                CuAssertIntEquals (tc, fixtures[i].output_len, length);
                CuAssertStrEquals (tc, fixtures[i].output, string);
+               free (string);
        }
 }
 
index 7f23c53909533091a7def9e4d5304c213e2ce4f7..c1441652f0a43d10e7eafef9c787b14177b49d1c 100644 (file)
@@ -815,6 +815,7 @@ p11_kit_iter_free (P11KitIter *iter)
        finish_iterating (iter, CKR_OK);
        p11_array_free (iter->modules);
        p11_attrs_free (iter->match_attrs);
+       free (iter->slots);
 
        for (cb = iter->callbacks; cb != NULL; cb = next) {
                next = cb->next;
@@ -822,4 +823,6 @@ p11_kit_iter_free (P11KitIter *iter)
                        (cb->destroyer) (cb->callback_data);
                free (cb);
        }
+
+       free (iter);
 }
index 758acf42b2e50bd0115a6776de622c912e4edfc1..dd020bccc6c987a0b8b6ac790c0750a432004a3c 100644 (file)
@@ -109,7 +109,6 @@ test_pin_read (CuTest *tc)
        p11_kit_pin_unregister_callback ("/the/pin_source", callback_one,
                                         &data);
 
-       p11_kit_pin_ref (pin);
        p11_kit_pin_unref (pin);
 }
 
index 81aa06c9310c02157466f9398bcfa8f29a15b968..ccfce2c003b59ca93af2b0be4280e6a55c0c3dc3 100644 (file)
@@ -983,6 +983,7 @@ test_load_attributes_none (CuTest *tc)
                attrs = p11_attrs_buildn (NULL, NULL, 0);
                rv = p11_kit_iter_load_attributes (iter, attrs, 0);
                CuAssertTrue (tc, rv == CKR_OK);
+               p11_attrs_free (attrs);
        }
 
        CuAssertTrue (tc, rv == CKR_CANCEL);
index 5bdbaa4c40d401520edc9a38928c5ff0547974a3..3f0e4e0d96c831dc5aebf01cd818e09438576a30 100644 (file)
@@ -96,6 +96,8 @@ test_no_duplicates (CuTest *tc)
                        CuAssert (tc, "shouldn't be reached", 0);
                if (!p11_dict_set (paths, path, ""))
                        CuAssert (tc, "shouldn't be reached", 0);
+
+               free (path);
        }
 
        p11_dict_free (paths);
index 0bb35db60a37a40f1d3d6f89c37ba54591e72e5d..52bd61dd98c0c58d621af832e129071872ab1b70 100644 (file)
@@ -922,10 +922,7 @@ parse_class_attribute (const char *name, const char *start, const char *end,
 
        free (value);
 
-       attr.pValue = malloc (sizeof (klass));
-       return_val_if_fail (attr.pValue != NULL, P11_KIT_URI_UNEXPECTED);
-
-       memcpy (attr.pValue, &klass, sizeof (klass));
+       attr.pValue = &klass;
        attr.ulValueLen = sizeof (klass);
        attr.type = CKA_CLASS;
 
index 8e02421ab8085a37e965248285f908e8bd666896..cf387f72f54b47716c44acb664825f5681efa40c 100644 (file)
@@ -602,9 +602,6 @@ p11_extract_openssl_directory (P11KitIter *iter,
        p11_buffer_init (&buf, 0);
 
        while ((rv = p11_kit_iter_next (iter)) == CKR_OK) {
-               pem = p11_pem_write (ex->cert_der, ex->cert_len, "CERTIFICATE", &length);
-               return_val_if_fail (pem != NULL, false);
-
                if (!p11_buffer_reset (&buf, 1024))
                        return_val_if_reached (false);
 
index dc68c1919180318ff6acaa0f2b51f4796bcb2465..77df10944b0336acbd82382df00e237dc158c129 100644 (file)
@@ -184,6 +184,7 @@ test_file (CuTest *tc)
        test_check_file (tc, test.directory, "extract.pem",
                         SRCDIR "/files/cacert3-trusted-server-alias.pem");
 
+       free (test.ex.destination);
        teardown (tc);
 }
 
@@ -208,6 +209,7 @@ test_plain (CuTest *tc)
        test_check_file (tc, test.directory, "extract.pem",
                         SRCDIR "/files/cacert3-trusted-alias.pem");
 
+       free (test.ex.destination);
        teardown (tc);
 }
 
@@ -250,6 +252,7 @@ test_keyid (CuTest *tc)
        test_check_file (tc, test.directory, "extract.pem",
                         SRCDIR "/files/cacert3-trusted-keyid.pem");
 
+       free (test.ex.destination);
        teardown (tc);
 }
 
@@ -282,6 +285,7 @@ test_not_authority (CuTest *tc)
        test_check_file (tc, test.directory, "extract.pem",
                         SRCDIR "/files/cacert3-not-trusted.pem");
 
+       free (test.ex.destination);
        teardown (tc);
 }
 
@@ -316,6 +320,7 @@ test_distrust_all (CuTest *tc)
        test_check_file (tc, test.directory, "extract.pem",
                         SRCDIR "/files/cacert3-distrust-all.pem");
 
+       free (test.ex.destination);
        teardown (tc);
 }
 
@@ -347,6 +352,7 @@ test_file_multiple (CuTest *tc)
        test_check_file (tc, test.directory, "extract.pem",
                         SRCDIR "/files/cacert3-trusted-multiple.pem");
 
+       free (test.ex.destination);
        teardown (tc);
 }
 
@@ -369,6 +375,7 @@ test_file_without (CuTest *tc)
 
        test_check_data (tc, test.directory, "extract.pem", "", 0);
 
+       free (test.ex.destination);
        teardown (tc);
 }
 
index 3be8fee2017e9ed26e59dc5b56fa14980600b8cf..5c19455e9ff9d65489b7e904c34daa89afb7d75c 100644 (file)
@@ -135,6 +135,7 @@ test_file (CuTest *tc)
 
        test_check_file (tc, test.directory, "extract.pem", SRCDIR "/files/cacert3.pem");
 
+       free (test.ex.destination);
        teardown (tc);
 }
 
@@ -160,6 +161,7 @@ test_file_multiple (CuTest *tc)
 
        test_check_file (tc, test.directory, "extract.pem", SRCDIR "/files/cacert3-twice.pem");
 
+       free (test.ex.destination);
        teardown (tc);
 }
 
@@ -174,9 +176,6 @@ test_file_without (CuTest *tc)
        p11_kit_iter_add_filter (test.iter, certificate_filter, 1);
        p11_kit_iter_begin_with (test.iter, &test.module, 0, 0);
 
-       if (asprintf (&test.ex.destination, "%s/%s", test.directory, "extract.cer") < 0)
-               assert_not_reached ();
-
        if (asprintf (&test.ex.destination, "%s/%s", test.directory, "extract.pem") < 0)
                assert_not_reached ();
 
@@ -185,6 +184,7 @@ test_file_without (CuTest *tc)
 
        test_check_data (tc, test.directory, "extract.pem", "", 0);
 
+       free (test.ex.destination);
        teardown (tc);
 }
 
index cd6cb4425c1773023050e5a46b551afdd1033cc3..32713ee6f94192491287cb08c01886ba1b91af48 100644 (file)
@@ -91,6 +91,8 @@ write_zero_file (CuTest *tc,
        CuAssertTrue (tc, fd != -1);
        res = close (fd);
        CuAssertTrue (tc, res >= 0);
+
+       free (filename);
 }
 
 static void
index f3585f1664e9606f772e68e3e9e8abac88673030..7cf97876400219816964525f8a9d445d6b706bac 100644 (file)
@@ -135,6 +135,7 @@ test_file (CuTest *tc)
 
        test_check_file (tc, test.directory, "extract.cer", SRCDIR "/files/cacert3.der");
 
+       free (test.ex.destination);
        teardown (tc);
 }
 
@@ -166,6 +167,7 @@ test_file_multiple (CuTest *tc)
 
        test_check_file (tc, test.directory, "extract.cer", SRCDIR "/files/cacert3.der");
 
+       free (test.ex.destination);
        teardown (tc);
 }
 
@@ -192,6 +194,7 @@ test_file_without (CuTest *tc)
 
        p11_message_loud ();
 
+       free (test.ex.destination);
        teardown (tc);
 }
 
index 93c5f3ef66f1077f70e3f74d47e022d3c6a1fb5e..53201ed5d3f07a6cb18e332e2233bbd8db9c40ab 100644 (file)
@@ -1159,6 +1159,8 @@ replace_nss_trust_object (p11_builder *builder,
        rv = p11_index_replace_all (index, match, CKA_INVALID, array);
        return_if_fail (rv == CKR_OK);
        p11_array_free (array);
+
+       p11_attrs_free (match);
 }
 
 static void
index 1275cd907994fd3a6bcc37c70bf198514ada2f7e..c8632ccfdd890d8df9eb39671f8db94c6b5d59a4 100644 (file)
@@ -293,10 +293,10 @@ index_notify (p11_index *index,
 {
        index_object *obj;
 
-       if (!index->notify || index->notifying)
-               return;
+       if (!index->notify || index->notifying) {
+               p11_attrs_free (removed);
 
-       if (!index->changes) {
+       } else if (!index->changes) {
                call_notify (index, handle, removed);
                p11_attrs_free (removed);
 
@@ -373,6 +373,7 @@ p11_index_take (p11_index *index,
        rv = index_build (index, &obj->attrs, attrs);
        if (rv != CKR_OK) {
                p11_attrs_free (attrs);
+               free (obj);
                return rv;
        }
 
index a81930320e56c6d87bca6e5c8077cbddaf7883d6..6be28470afa45e63f52953919bd35709720d1229 100644 (file)
@@ -188,6 +188,7 @@ create_tokens_inlock (p11_array *tokens,
        CK_SLOT_ID slot;
        const char *path;
        const char *label;
+       char *alloc;
        char *remaining;
        char *base;
        char *pos;
@@ -195,7 +196,7 @@ create_tokens_inlock (p11_array *tokens,
 
        p11_debug ("using paths: %s", paths);
 
-       remaining = strdup (paths);
+       alloc = remaining = strdup (paths);
        return_val_if_fail (remaining != NULL, false);
 
        while (remaining) {
@@ -240,7 +241,7 @@ create_tokens_inlock (p11_array *tokens,
                }
        }
 
-       free (remaining);
+       free (alloc);
        return true;
 }
 
index 19434ffd51664008627064a8348e0cb250ff3eba..2a8c9f9c7d0696d4d947b106495258c5ac0e45d0 100644 (file)
@@ -77,6 +77,7 @@ p11_session_free (void *data)
        p11_session *session = data;
 
        p11_session_set_operation (session, NULL, NULL);
+       p11_builder_free (session->builder);
        p11_index_free (session->index);
 
        free (session);
index be5390e1829fc965a6f6c523dcdbc2b21065c8d9..3212bac2f507262e7d2bdfea7c3c145ad494c3df 100644 (file)
@@ -429,6 +429,7 @@ test_build_certificate_no_type (CuTest *cu)
        };
 
        CK_ATTRIBUTE *attrs;
+       CK_ATTRIBUTE *merge;
        CK_RV rv;
 
        setup (cu);
@@ -436,8 +437,10 @@ test_build_certificate_no_type (CuTest *cu)
        p11_message_quiet ();
 
        attrs = NULL;
-       rv = p11_builder_build (test.builder, test.index, &attrs, p11_attrs_dup (input));
+       merge = p11_attrs_dup (input);
+       rv = p11_builder_build (test.builder, test.index, &attrs, merge);
        CuAssertIntEquals (cu, CKR_TEMPLATE_INCOMPLETE, rv);
+       p11_attrs_free (merge);
 
        p11_message_loud ();
 
@@ -456,6 +459,7 @@ test_build_certificate_bad_type (CuTest *cu)
        };
 
        CK_ATTRIBUTE *attrs;
+       CK_ATTRIBUTE *merge;
        CK_RV rv;
 
        setup (cu);
@@ -463,8 +467,10 @@ test_build_certificate_bad_type (CuTest *cu)
        p11_message_quiet ();
 
        attrs = NULL;
-       rv = p11_builder_build (test.builder, test.index, &attrs, p11_attrs_dup (input));
+       merge = p11_attrs_dup (input);
+       rv = p11_builder_build (test.builder, test.index, &attrs, merge);
        CuAssertIntEquals (cu, CKR_TEMPLATE_INCONSISTENT, rv);
+       p11_attrs_free (merge);
 
        p11_message_loud ();
 
@@ -524,6 +530,7 @@ test_create_not_settable (CuTest *cu)
        };
 
        CK_ATTRIBUTE *attrs;
+       CK_ATTRIBUTE *merge;
        CK_RV rv;
 
        setup (cu);
@@ -531,8 +538,10 @@ test_create_not_settable (CuTest *cu)
        p11_message_quiet ();
 
        attrs = NULL;
-       rv = p11_builder_build (test.builder, test.index, &attrs, p11_attrs_dup (input));
+       merge = p11_attrs_dup (input);
+       rv = p11_builder_build (test.builder, test.index, &attrs, merge);
        CuAssertIntEquals (cu, CKR_ATTRIBUTE_READ_ONLY, rv);
+       p11_attrs_free (merge);
 
        p11_message_loud ();
 
@@ -587,6 +596,7 @@ test_create_unsupported (CuTest *cu)
        };
 
        CK_ATTRIBUTE *attrs;
+       CK_ATTRIBUTE *merge;
        CK_RV rv;
 
        setup (cu);
@@ -594,8 +604,10 @@ test_create_unsupported (CuTest *cu)
        p11_message_quiet ();
 
        attrs = NULL;
-       rv = p11_builder_build (test.builder, test.index, &attrs, p11_attrs_dup (input));
+       merge = p11_attrs_dup (input);
+       rv = p11_builder_build (test.builder, test.index, &attrs, merge);
        CuAssertIntEquals (cu, CKR_TEMPLATE_INCONSISTENT, rv);
+       p11_attrs_free (merge);
 
        p11_message_loud ();
 
@@ -613,6 +625,7 @@ test_create_generated (CuTest *cu)
        };
 
        CK_ATTRIBUTE *attrs;
+       CK_ATTRIBUTE *merge;
        CK_RV rv;
 
        setup (cu);
@@ -620,8 +633,10 @@ test_create_generated (CuTest *cu)
        p11_message_quiet ();
 
        attrs = NULL;
-       rv = p11_builder_build (test.builder, test.index, &attrs, p11_attrs_dup (input));
+       merge = p11_attrs_dup (input);
+       rv = p11_builder_build (test.builder, test.index, &attrs, merge);
        CuAssertIntEquals (cu, CKR_TEMPLATE_INCONSISTENT, rv);
+       p11_attrs_free (merge);
 
        p11_message_loud ();
 
@@ -639,6 +654,7 @@ test_create_bad_attribute (CuTest *cu)
        };
 
        CK_ATTRIBUTE *attrs;
+       CK_ATTRIBUTE *merge;
        CK_RV rv;
 
        setup (cu);
@@ -646,8 +662,10 @@ test_create_bad_attribute (CuTest *cu)
        p11_message_quiet ();
 
        attrs = NULL;
-       rv = p11_builder_build (test.builder, test.index, &attrs, p11_attrs_dup (input));
+       merge = p11_attrs_dup (input);
+       rv = p11_builder_build (test.builder, test.index, &attrs, merge);
        CuAssertIntEquals (cu, CKR_TEMPLATE_INCONSISTENT, rv);
+       p11_attrs_free (merge);
 
        p11_message_loud ();
 
@@ -663,6 +681,7 @@ test_create_missing_attribute (CuTest *cu)
        };
 
        CK_ATTRIBUTE *attrs;
+       CK_ATTRIBUTE *merge;
        CK_RV rv;
 
        setup (cu);
@@ -670,8 +689,10 @@ test_create_missing_attribute (CuTest *cu)
        p11_message_quiet ();
 
        attrs = NULL;
-       rv = p11_builder_build (test.builder, test.index, &attrs, p11_attrs_dup (input));
+       merge = p11_attrs_dup (input);
+       rv = p11_builder_build (test.builder, test.index, &attrs, merge);
        CuAssertIntEquals (cu, CKR_TEMPLATE_INCOMPLETE, rv);
+       p11_attrs_free (merge);
 
        p11_message_loud ();
 
@@ -687,6 +708,7 @@ test_create_no_class (CuTest *cu)
        };
 
        CK_ATTRIBUTE *attrs;
+       CK_ATTRIBUTE *merge;
        CK_RV rv;
 
        setup (cu);
@@ -694,8 +716,10 @@ test_create_no_class (CuTest *cu)
        p11_message_quiet ();
 
        attrs = NULL;
-       rv = p11_builder_build (test.builder, test.index, &attrs, p11_attrs_dup (input));
+       merge = p11_attrs_dup (input);
+       rv = p11_builder_build (test.builder, test.index, &attrs, merge);
        CuAssertIntEquals (cu, CKR_TEMPLATE_INCOMPLETE, rv);
+       p11_attrs_free (merge);
 
        p11_message_loud ();
 
@@ -712,6 +736,7 @@ test_create_token_mismatch (CuTest *cu)
        };
 
        CK_ATTRIBUTE *attrs;
+       CK_ATTRIBUTE *merge;
        CK_RV rv;
 
        setup (cu);
@@ -719,8 +744,10 @@ test_create_token_mismatch (CuTest *cu)
        p11_message_quiet ();
 
        attrs = NULL;
-       rv = p11_builder_build (test.builder, test.index, &attrs, p11_attrs_dup (input));
+       merge = p11_attrs_dup (input);
+       rv = p11_builder_build (test.builder, test.index, &attrs, merge);
        CuAssertIntEquals (cu, CKR_TEMPLATE_INCONSISTENT, rv);
+       p11_attrs_free (merge);
 
        p11_message_loud ();
 
@@ -800,6 +827,7 @@ test_modify_read_only (CuTest *cu)
        merge = p11_attrs_dup (modify);
        rv = p11_builder_build (test.builder, test.index, &attrs, merge);
        CuAssertIntEquals (cu, CKR_ATTRIBUTE_READ_ONLY, rv);
+       p11_attrs_free (merge);
 
        p11_message_loud ();
 
@@ -869,6 +897,7 @@ test_modify_not_modifiable (CuTest *cu)
        };
 
        CK_ATTRIBUTE *attrs;
+       CK_ATTRIBUTE *merge;
        CK_RV rv;
 
        setup (cu);
@@ -879,8 +908,10 @@ test_modify_not_modifiable (CuTest *cu)
 
        p11_message_quiet ();
 
-       rv = p11_builder_build (test.builder, test.index, &attrs, p11_attrs_dup (modify));
+       merge = p11_attrs_dup (modify);
+       rv = p11_builder_build (test.builder, test.index, &attrs, merge);
        CuAssertIntEquals (cu, CKR_ATTRIBUTE_READ_ONLY, rv);
+       p11_attrs_free (merge);
 
        p11_message_loud ();
 
index d58a510f51eb82ca96b6c00424a0523903fc8443..14f5a8a8a7ad2346d38cf862dfeec29994763857 100644 (file)
@@ -192,6 +192,7 @@ test_snapshot (CuTest *cu)
        for (i = 0; i < NUM; i++)
                CuAssertIntEquals (cu, expected[i], snapshot[i]);
 
+       free (snapshot);
        teardown (cu);
 }
 
@@ -229,6 +230,7 @@ test_snapshot_base (CuTest *cu)
        for (i = 0; i < NUM * 2; i++)
                CuAssertIntEquals (cu, expected[i / 2], snapshot[i]);
 
+       free (snapshot);
        teardown (cu);
 }
 
@@ -665,6 +667,7 @@ test_replace_all (CuTest *tc)
        CuAssertTrue (tc, rv == CKR_OK);
 
        CuAssertIntEquals (tc, 0, array->num);
+       p11_array_free (array);
 
        /* eins should have replaced one */
        check = p11_index_find (test.index, eins, -1);
@@ -1021,6 +1024,8 @@ test_change_nested (CuTest *cu)
        CuAssertTrue (cu, rv == CKR_OK);
        p11_index_finish (index);
        CuAssertIntEquals (cu, 1, on_change_called);
+
+       p11_index_free (index);
 }
 
 int
index 1d97f9b252e65721a5844328d4df1ea7b13ebf9b..1033b054bae858724a07bef7e4faa4a343ff0c91 100644 (file)
@@ -431,6 +431,8 @@ check_has_trust_object (CuTest *cu,
 
        check_trust_object_equiv (cu, sessions[0], objects[0], cert);
        check_trust_object_hashes (cu, sessions[0], objects[0], cert);
+
+       p11_attrs_free (match);
 }
 
 static void