diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/x509/x509_policy.c | 68 |
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) | |||
| 193 | static void | 193 | static void |
| 194 | x509_policy_node_free(X509_POLICY_NODE *node) | 194 | x509_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 | ||
| 204 | static X509_POLICY_NODE * | 204 | static X509_POLICY_NODE * |
| 205 | x509_policy_node_new(const ASN1_OBJECT *policy) | 205 | x509_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 | ||
| 222 | static int | 224 | static int |
| @@ -229,27 +231,29 @@ x509_policy_node_cmp(const X509_POLICY_NODE *const *a, | |||
| 229 | static void | 231 | static void |
| 230 | x509_policy_level_free(X509_POLICY_LEVEL *level) | 232 | x509_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 | ||
| 239 | static X509_POLICY_LEVEL * | 241 | static X509_POLICY_LEVEL * |
| 240 | x509_policy_level_new(void) | 242 | x509_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 | ||
| 255 | static int | 259 | static int |
