]> granicus.if.org Git - p11-kit/commitdiff
build: Free memory before return{,_val}_if_* macros
authorDaiki Ueno <dueno@redhat.com>
Tue, 16 Oct 2018 16:10:05 +0000 (18:10 +0200)
committerDaiki Ueno <ueno@gnu.org>
Wed, 17 Oct 2018 08:13:32 +0000 (10:13 +0200)
p11-kit/iter.c
p11-kit/proxy.c
trust/asn1.c
trust/builder.c
trust/index.c
trust/persist.c
trust/save.c
trust/session.c
trust/token.c

index 0e4ca6e8969e02885f96182866e4f2342c9bda4e..d1ffd91d487ef794c76baee580ca0787dd170b32 100644 (file)
@@ -157,7 +157,10 @@ p11_kit_iter_new (P11KitUri *uri,
        return_val_if_fail (iter != NULL, NULL);
 
        iter->modules = p11_array_new (NULL);
-       return_val_if_fail (iter->modules != NULL, NULL);
+       if (iter->modules == NULL) {
+               p11_kit_iter_free (iter);
+               return_val_if_reached (NULL);
+       }
 
        iter->want_writable = !!(behavior & P11_KIT_ITER_WANT_WRITABLE);
        iter->preload_results = !(behavior & P11_KIT_ITER_BUSY_SESSIONS);
index b7fb63d9cac5f45be58196423ce37e73ffafa6dc..abe793556f341ec6b597abfc596c37ea47f6c44b 100644 (file)
@@ -267,7 +267,10 @@ proxy_create (Proxy **res, CK_FUNCTION_LIST **loaded,
        py->forkid = p11_forkid;
 
        py->inited = modules_dup (loaded);
-       return_val_if_fail (py->inited != NULL, CKR_HOST_MEMORY);
+       if (py->inited == NULL) {
+               proxy_free (py, 0);
+               return_val_if_reached (CKR_HOST_MEMORY);
+       }
 
        rv = p11_kit_modules_initialize (py->inited, NULL);
 
@@ -320,7 +323,10 @@ proxy_create (Proxy **res, CK_FUNCTION_LIST **loaded,
        }
 
        py->sessions = p11_dict_new (p11_dict_ulongptr_hash, p11_dict_ulongptr_equal, NULL, free);
-       return_val_if_fail (py->sessions != NULL, CKR_HOST_MEMORY);
+       if (py->sessions == NULL) {
+               proxy_free (py, 1);
+               return_val_if_reached (CKR_HOST_MEMORY);
+       }
        py->refs = 1;
 
        *res = py;
index dd1812dbb98eb56d41f866f75554d53df46e93ff..5ce682d2daa9277d934fa0f4687b52a7d3c2a9de 100644 (file)
@@ -285,11 +285,17 @@ p11_asn1_cache_new (void)
        return_val_if_fail (cache != NULL, NULL);
 
        cache->defs = p11_asn1_defs_load ();
-       return_val_if_fail (cache->defs != NULL, NULL);
+       if (cache->defs == NULL) {
+               p11_asn1_cache_free (cache);
+               return_val_if_reached (NULL);
+       }
 
        cache->items = p11_dict_new (p11_dict_direct_hash, p11_dict_direct_equal,
                                     NULL, free_asn1_item);
-       return_val_if_fail (cache->items != NULL, NULL);
+       if (cache->items == NULL) {
+               p11_asn1_cache_free (cache);
+               return_val_if_reached (NULL);
+       }
 
        return cache;
 }
@@ -342,7 +348,10 @@ p11_asn1_cache_take (p11_asn1_cache *cache,
        item->length = der_len;
        item->node = node;
        item->struct_name = strdup (struct_name);
-       return_if_fail (item->struct_name != NULL);
+       if (item->struct_name == NULL) {
+               free_asn1_item (item);
+               return_if_reached ();
+       }
 
        if (!p11_dict_set (cache->items, (void *)der, item))
                return_if_reached ();
index 742c544776416f7629280549507a182fad342efb..d819dc858d63f4d6f360ead3e5fa388387104ab6 100644 (file)
@@ -187,7 +187,10 @@ p11_builder_new (int flags)
        return_val_if_fail (builder != NULL, NULL);
 
        builder->asn1_cache = p11_asn1_cache_new ();
-       return_val_if_fail (builder->asn1_cache, NULL);
+       if (builder->asn1_cache == NULL) {
+               p11_builder_free (builder);
+               return_val_if_reached (NULL);
+       }
        builder->asn1_defs = p11_asn1_cache_defs (builder->asn1_cache);
 
        builder->flags = flags;
index f4b6b4b3e21fb8f8039b658cd9a79bf2a36390a9..6a8e53581902a3133fe79b12423d0c8946181e60 100644 (file)
@@ -170,10 +170,16 @@ p11_index_new (p11_index_build_cb build,
        index->objects = p11_dict_new (p11_dict_ulongptr_hash,
                                       p11_dict_ulongptr_equal,
                                       NULL, free_object);
-       return_val_if_fail (index->objects != NULL, NULL);
+       if (index->objects == NULL) {
+               p11_index_free (index);
+               return_val_if_reached (NULL);
+       }
 
        index->buckets = calloc (NUM_BUCKETS, sizeof (index_bucket));
-       return_val_if_fail (index->buckets != NULL, NULL);
+       if (index->buckets == NULL) {
+               p11_index_free (index);
+               return_val_if_reached (NULL);
+       }
 
        return index;
 }
index 887b316c8d965e7a28e5ff1499946f1104cca353..569cea1206463f03a301c655d0580a46848991d2 100644 (file)
@@ -89,7 +89,10 @@ p11_persist_new (void)
        return_val_if_fail (persist != NULL, NULL);
 
        persist->constants = p11_constant_reverse (true);
-       return_val_if_fail (persist->constants != NULL, NULL);
+       if (persist->constants == NULL) {
+               free (persist);
+               return_val_if_reached (NULL);
+       }
 
        return persist;
 }
index abff864774196e058ff13fbb05668751ff91bcc9..8184e13a7125af246059029755c5cc418ef99571 100644 (file)
@@ -68,6 +68,8 @@ static char *   make_unique_name    (const char *bare,
                                      const char *extension,
                                      int (*check) (void *, char *),
                                      void *data);
+static void filo_free (p11_save_file *file);
+static void dir_free (p11_save_dir *dir);
 
 bool
 p11_save_write_and_finish (p11_save_file *file,
@@ -114,9 +116,15 @@ p11_save_open_file (const char *path,
        return_val_if_fail (file != NULL, NULL);
        file->temp = temp;
        file->bare = strdup (path);
-       return_val_if_fail (file->bare != NULL, NULL);
+       if (file->bare == NULL) {
+               filo_free (file);
+               return_val_if_reached (NULL);
+       }
        file->extension = strdup (extension);
-       return_val_if_fail (file->extension != NULL, NULL);
+       if (file->extension == NULL) {
+               filo_free (file);
+               return_val_if_reached (NULL);
+       }
        file->flags = flags;
        file->fd = fd;
 
@@ -166,6 +174,13 @@ filo_free (p11_save_file *file)
        free (file);
 }
 
+static void
+dir_free (p11_save_dir *dir) {
+       p11_dict_free (dir->cache);
+       free (dir->path);
+       free (dir);
+}
+
 #ifdef OS_UNIX
 
 static int
@@ -349,10 +364,16 @@ p11_save_open_directory (const char *path,
        return_val_if_fail (dir != NULL, NULL);
 
        dir->path = strdup (path);
-       return_val_if_fail (dir->path != NULL, NULL);
+       if (dir->path == NULL) {
+               dir_free (dir);
+               return_val_if_reached (NULL);
+       }
 
        dir->cache = p11_dict_new (p11_dict_str_hash, p11_dict_str_equal, free, NULL);
-       return_val_if_fail (dir->cache != NULL, NULL);
+       if (dir->cache == NULL) {
+               dir_free (dir);
+               return_val_if_reached (NULL);
+       }
 
        dir->flags = flags;
        return dir;
index b93a5c35c678c93874fbcf65f40818d3efcafe68..d4643946095a0219be3dd44cc12326f2e14db10b 100644 (file)
@@ -59,12 +59,18 @@ p11_session_new (p11_token *token)
        session->handle = p11_module_next_id ();
 
        session->builder = p11_builder_new (P11_BUILDER_FLAG_NONE);
-       return_val_if_fail (session->builder, NULL);
+       if (session->builder == NULL) {
+               p11_session_free (session);
+               return_val_if_reached (NULL);
+       }
 
        session->index = p11_index_new (p11_builder_build, NULL, NULL,
                                        p11_builder_changed,
                                        session->builder);
-       return_val_if_fail (session->index != NULL, NULL);
+       if (session->index == NULL) {
+               p11_session_free (session);
+               return_val_if_reached (NULL);
+       }
 
        session->token = token;
 
index 4cbcc77844a7a804a020000d127a41ec7bde3495..fd3b04368d72b1d77042dffc3b2328164938ac23 100644 (file)
@@ -829,7 +829,10 @@ p11_token_new (CK_SLOT_ID slot,
        return_val_if_fail (token != NULL, NULL);
 
        token->builder = p11_builder_new (P11_BUILDER_FLAG_TOKEN);
-       return_val_if_fail (token->builder != NULL, NULL);
+       if (token->builder == NULL) {
+               p11_token_free (token);
+               return_val_if_reached (NULL);
+       }
 
        token->index = p11_index_new (on_index_build,
                                      on_index_store,