diff options
author | Daiki Ueno <dueno@redhat.com> | 2018-10-16 18:10:05 +0200 |
---|---|---|
committer | Daiki Ueno <ueno@gnu.org> | 2018-10-17 10:13:32 +0200 |
commit | b10dadce5a3c921149b2c9fe0dec614f8076ebda (patch) | |
tree | 1be6432a3cd602032c4c036bcfac4fea1b1f7158 /trust/asn1.c | |
parent | c76197ddbbd0c29adc2bceff2ee9f740f71d134d (diff) |
build: Free memory before return{,_val}_if_* macros
Diffstat (limited to 'trust/asn1.c')
-rw-r--r-- | trust/asn1.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/trust/asn1.c b/trust/asn1.c index dd1812d..5ce682d 100644 --- a/trust/asn1.c +++ b/trust/asn1.c @@ -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 (); |