summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2023-04-27 08:04:40 +0000
committertb <>2023-04-27 08:04:40 +0000
commitd2685eaa06a05e124c201a6a9666a7ec69fe764e (patch)
treeb435ddce6722522f24ff84fdf5ee5951614907a9 /src
parentece2572a7345902fd6b7f059dfe2253775c43db1 (diff)
downloadopenbsd-d2685eaa06a05e124c201a6a9666a7ec69fe764e.tar.gz
openbsd-d2685eaa06a05e124c201a6a9666a7ec69fe764e.tar.bz2
openbsd-d2685eaa06a05e124c201a6a9666a7ec69fe764e.zip
Rework simple allocation and free functions in x509_policy.c
Use calloc() instead of malloc/memset and make free functions look the same as elsewhere in the tree. ok beck jsing
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/x509/x509_policy.c68
1 files changed, 36 insertions, 32 deletions
diff --git a/src/lib/libcrypto/x509/x509_policy.c b/src/lib/libcrypto/x509/x509_policy.c
index cb8e7d1178..85286080f1 100644
--- a/src/lib/libcrypto/x509/x509_policy.c
+++ b/src/lib/libcrypto/x509/x509_policy.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_policy.c,v 1.12 2023/04/26 22:09:07 tb Exp $ */ 1/* $OpenBSD: x509_policy.c,v 1.13 2023/04/27 08:04:40 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2022, Google Inc. 3 * Copyright (c) 2022, Google Inc.
4 * 4 *
@@ -193,30 +193,32 @@ is_any_policy(const ASN1_OBJECT *obj)
193static void 193static void
194x509_policy_node_free(X509_POLICY_NODE *node) 194x509_policy_node_free(X509_POLICY_NODE *node)
195{ 195{
196 if (node != NULL) { 196 if (node == NULL)
197 ASN1_OBJECT_free(node->policy); 197 return;
198 sk_ASN1_OBJECT_pop_free(node->parent_policies, 198
199 ASN1_OBJECT_free); 199 ASN1_OBJECT_free(node->policy);
200 free(node); 200 sk_ASN1_OBJECT_pop_free(node->parent_policies, ASN1_OBJECT_free);
201 } 201 free(node);
202} 202}
203 203
204static X509_POLICY_NODE * 204static X509_POLICY_NODE *
205x509_policy_node_new(const ASN1_OBJECT *policy) 205x509_policy_node_new(const ASN1_OBJECT *policy)
206{ 206{
207 assert(!is_any_policy(policy)); 207 assert(!is_any_policy(policy));
208 X509_POLICY_NODE *node = malloc(sizeof(X509_POLICY_NODE)); 208 X509_POLICY_NODE *node;
209 if (node == NULL) { 209
210 return NULL; 210 if ((node = calloc(1, sizeof(*node))) == NULL)
211 } 211 goto err;
212 memset(node, 0, sizeof(X509_POLICY_NODE)); 212 if ((node->policy = OBJ_dup(policy)) == NULL)
213 node->policy = OBJ_dup(policy); 213 goto err;
214 node->parent_policies = sk_ASN1_OBJECT_new_null(); 214 if ((node->parent_policies = sk_ASN1_OBJECT_new_null()) == NULL)
215 if (node->policy == NULL || node->parent_policies == NULL) { 215 goto err;
216 x509_policy_node_free(node); 216
217 return NULL;
218 }
219 return node; 217 return node;
218
219 err:
220 x509_policy_node_free(node);
221 return NULL;
220} 222}
221 223
222static int 224static int
@@ -229,27 +231,29 @@ x509_policy_node_cmp(const X509_POLICY_NODE *const *a,
229static void 231static void
230x509_policy_level_free(X509_POLICY_LEVEL *level) 232x509_policy_level_free(X509_POLICY_LEVEL *level)
231{ 233{
232 if (level != NULL) { 234 if (level == NULL)
233 sk_X509_POLICY_NODE_pop_free(level->nodes, 235 return;
234 x509_policy_node_free); 236
235 free(level); 237 sk_X509_POLICY_NODE_pop_free(level->nodes, x509_policy_node_free);
236 } 238 free(level);
237} 239}
238 240
239static X509_POLICY_LEVEL * 241static X509_POLICY_LEVEL *
240x509_policy_level_new(void) 242x509_policy_level_new(void)
241{ 243{
242 X509_POLICY_LEVEL *level = malloc(sizeof(X509_POLICY_LEVEL)); 244 X509_POLICY_LEVEL *level;
243 if (level == NULL) { 245
244 return NULL; 246 if ((level = calloc(1, sizeof(*level))) == NULL)
245 } 247 goto err;
246 memset(level, 0, sizeof(X509_POLICY_LEVEL));
247 level->nodes = sk_X509_POLICY_NODE_new(x509_policy_node_cmp); 248 level->nodes = sk_X509_POLICY_NODE_new(x509_policy_node_cmp);
248 if (level->nodes == NULL) { 249 if (level->nodes== NULL)
249 x509_policy_level_free(level); 250 goto err;
250 return NULL; 251
251 }
252 return level; 252 return level;
253
254 err:
255 x509_policy_level_free(level);
256 return NULL;
253} 257}
254 258
255static int 259static int