From 7f11ef3d087b85d9ef80b28d47e8ce3d7382cacf Mon Sep 17 00:00:00 2001 From: tb <> Date: Fri, 5 Nov 2021 17:08:12 +0000 Subject: Use calloc() to remove the need of silly zeroing of most members. Check for allocation failures and if one happens push an error on the stack and clean up using X509_STORE_free(). ok jsing --- src/lib/libcrypto/x509/x509_lu.c | 46 ++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 28 deletions(-) (limited to 'src/lib') diff --git a/src/lib/libcrypto/x509/x509_lu.c b/src/lib/libcrypto/x509/x509_lu.c index b968a13d6f..3fa572c7ef 100644 --- a/src/lib/libcrypto/x509/x509_lu.c +++ b/src/lib/libcrypto/x509/x509_lu.c @@ -1,4 +1,4 @@ -/* $OpenBSD: x509_lu.c,v 1.41 2021/11/05 17:06:42 tb Exp $ */ +/* $OpenBSD: x509_lu.c,v 1.42 2021/11/05 17:08:12 tb Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -186,40 +186,30 @@ x509_object_cmp(const X509_OBJECT * const *a, const X509_OBJECT * const *b) X509_STORE * X509_STORE_new(void) { - X509_STORE *ret; + X509_STORE *store; - if ((ret = malloc(sizeof(X509_STORE))) == NULL) - return NULL; - ret->objs = sk_X509_OBJECT_new(x509_object_cmp); - ret->cache = 1; - ret->get_cert_methods = sk_X509_LOOKUP_new_null(); - ret->verify = 0; - ret->verify_cb = 0; + if ((store = calloc(1, sizeof(*store))) == NULL) + goto err; - if ((ret->param = X509_VERIFY_PARAM_new()) == NULL) + if ((store->objs = sk_X509_OBJECT_new(x509_object_cmp)) == NULL) + goto err; + if ((store->get_cert_methods = sk_X509_LOOKUP_new_null()) == NULL) + goto err; + if ((store->param = X509_VERIFY_PARAM_new()) == NULL) goto err; - ret->get_issuer = 0; - ret->check_issued = 0; - ret->check_revocation = 0; - ret->get_crl = 0; - ret->check_crl = 0; - ret->cert_crl = 0; - ret->lookup_certs = 0; - ret->lookup_crls = 0; - ret->cleanup = 0; - - if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE, ret, &ret->ex_data)) + if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE, store, + &store->ex_data)) goto err; - ret->references = 1; - return ret; + store->references = 1; + + return store; + + err: + X509error(ERR_R_MALLOC_FAILURE); + X509_STORE_free(store); -err: - X509_VERIFY_PARAM_free(ret->param); - sk_X509_LOOKUP_free(ret->get_cert_methods); - sk_X509_OBJECT_free(ret->objs); - free(ret); return NULL; } -- cgit v1.2.3-55-g6feb