Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/boringssl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Benjamin <davidben@chromium.org>2014-07-25 11:58:53 +0400
committerAdam Langley <agl@google.com>2014-07-30 04:34:55 +0400
commit61b66ffcc29f28900db4b037865a2206eb62242e (patch)
treee81bc8bca59cfcceb475ce170aa5cb71045e11c6 /crypto/x509
parent59b3a728dc2dd63bf68dad7863e51c72b1be5441 (diff)
Fix error-handling bugs.
Caught by clang scan-build. Change-Id: I133d0338fe38172d687c02099d909366a59ee95b Reviewed-on: https://boringssl-review.googlesource.com/1343 Reviewed-by: Adam Langley <agl@google.com>
Diffstat (limited to 'crypto/x509')
-rw-r--r--crypto/x509/x509_lu.c37
1 files changed, 17 insertions, 20 deletions
diff --git a/crypto/x509/x509_lu.c b/crypto/x509/x509_lu.c
index 3cf2d816..63b81c37 100644
--- a/crypto/x509/x509_lu.c
+++ b/crypto/x509/x509_lu.c
@@ -181,34 +181,31 @@ X509_STORE *X509_STORE_new(void)
if ((ret=(X509_STORE *)OPENSSL_malloc(sizeof(X509_STORE))) == NULL)
return NULL;
+ memset(ret, 0, sizeof(*ret));
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;
+ ret->cache = 1;
+ ret->get_cert_methods = sk_X509_LOOKUP_new_null();
if ((ret->param = X509_VERIFY_PARAM_new()) == NULL)
- return NULL;
-
- 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;
+ goto err;
if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE, ret, &ret->ex_data))
+ goto err;
+
+ ret->references = 1;
+ return ret;
+err:
+ if (ret)
{
- sk_X509_OBJECT_free(ret->objs);
+ if (ret->param)
+ X509_VERIFY_PARAM_free(ret->param);
+ if (ret->get_cert_methods)
+ sk_X509_LOOKUP_free(ret->get_cert_methods);
+ if (ret->objs)
+ sk_X509_OBJECT_free(ret->objs);
OPENSSL_free(ret);
- return NULL;
}
-
- ret->references=1;
- return ret;
+ return NULL;
}
static void cleanup(X509_OBJECT *a)