projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Move to REF_DEBUG, for consistency.
[openssl.git]
/
crypto
/
x509
/
x509_lu.c
diff --git
a/crypto/x509/x509_lu.c
b/crypto/x509/x509_lu.c
index 5017f02290cf9fc1c8875acbddd364bb789ac2cd..b53ec480327df6d38174b6dd92bcb0fd183827f8 100644
(file)
--- a/
crypto/x509/x509_lu.c
+++ b/
crypto/x509/x509_lu.c
@@
-1,4
+1,3
@@
-/* crypto/x509/x509_lu.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
@@
-57,9
+56,10
@@
*/
#include <stdio.h>
*/
#include <stdio.h>
-#include "cryptlib.h"
+#include "
internal/
cryptlib.h"
#include <openssl/lhash.h>
#include <openssl/x509.h>
#include <openssl/lhash.h>
#include <openssl/x509.h>
+#include "internal/x509_int.h"
#include <openssl/x509v3.h>
#include "x509_lcl.h"
#include <openssl/x509v3.h>
#include "x509_lcl.h"
@@
-67,15
+67,11
@@
X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method)
{
X509_LOOKUP *ret;
{
X509_LOOKUP *ret;
- ret = OPENSSL_
m
alloc(sizeof(*ret));
+ ret = OPENSSL_
z
alloc(sizeof(*ret));
if (ret == NULL)
return NULL;
if (ret == NULL)
return NULL;
- ret->init = 0;
- ret->skip = 0;
ret->method = method;
ret->method = method;
- ret->method_data = NULL;
- ret->store_ctx = NULL;
if ((method->new_item != NULL) && !method->new_item(ret)) {
OPENSSL_free(ret);
return NULL;
if ((method->new_item != NULL) && !method->new_item(ret)) {
OPENSSL_free(ret);
return NULL;
@@
-184,35
+180,28
@@
X509_STORE *X509_STORE_new(void)
{
X509_STORE *ret;
{
X509_STORE *ret;
- if ((ret = OPENSSL_
m
alloc(sizeof(*ret))) == NULL)
+ if ((ret = OPENSSL_
z
alloc(sizeof(*ret))) == NULL)
return NULL;
return NULL;
- ret->objs = sk_X509_OBJECT_new(x509_object_cmp);
+ if ((ret->objs = sk_X509_OBJECT_new(x509_object_cmp)) == NULL)
+ goto err;
ret->cache = 1;
ret->cache = 1;
- ret->get_cert_methods = sk_X509_LOOKUP_new_null();
- ret->verify = 0;
- ret->verify_cb = 0;
+ if ((ret->get_cert_methods = sk_X509_LOOKUP_new_null()) == NULL)
+ goto err;
if ((ret->param = X509_VERIFY_PARAM_new()) == NULL)
if ((ret->param = X509_VERIFY_PARAM_new()) == NULL)
-
return 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)) {
- sk_X509_OBJECT_free(ret->objs);
- OPENSSL_free(ret);
- return NULL;
- }
+ if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE, ret, &ret->ex_data))
+ goto err;
ret->references = 1;
return ret;
ret->references = 1;
return ret;
+err:
+ X509_VERIFY_PARAM_free(ret->param);
+ sk_X509_OBJECT_free(ret->objs);
+ sk_X509_LOOKUP_free(ret->get_cert_methods);
+ OPENSSL_free(ret);
+ return NULL;
}
static void cleanup(X509_OBJECT *a)
}
static void cleanup(X509_OBJECT *a)
@@
-240,17
+229,10
@@
void X509_STORE_free(X509_STORE *vfy)
return;
i = CRYPTO_add(&vfy->references, -1, CRYPTO_LOCK_X509_STORE);
return;
i = CRYPTO_add(&vfy->references, -1, CRYPTO_LOCK_X509_STORE);
-#ifdef REF_PRINT
- REF_PRINT("X509_STORE", vfy);
-#endif
+ REF_PRINT_COUNT("X509_STORE", vfy);
if (i > 0)
return;
if (i > 0)
return;
-#ifdef REF_CHECK
- if (i < 0) {
- fprintf(stderr, "X509_STORE_free, bad reference count\n");
- abort(); /* ok */
- }
-#endif
+ REF_ASSERT_ISNT(i < 0);
sk = vfy->get_cert_methods;
for (i = 0; i < sk_X509_LOOKUP_num(sk); i++) {
sk = vfy->get_cert_methods;
for (i = 0; i < sk_X509_LOOKUP_num(sk); i++) {
@@
-294,8
+276,8
@@
X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m)
}
}
}
}
-int X509_STORE_get_by_subject(X509_STORE_CTX *vs,
int type, X509_NAME *nam
e,
- X509_OBJECT *ret)
+int X509_STORE_get_by_subject(X509_STORE_CTX *vs,
X509_LOOKUP_TYPE typ
e,
+ X509_
NAME *name, X509_
OBJECT *ret)
{
X509_STORE *ctx = vs->ctx;
X509_LOOKUP *lu;
{
X509_STORE *ctx = vs->ctx;
X509_LOOKUP *lu;
@@
-403,11
+385,13
@@
int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x)
void X509_OBJECT_up_ref_count(X509_OBJECT *a)
{
switch (a->type) {
void X509_OBJECT_up_ref_count(X509_OBJECT *a)
{
switch (a->type) {
+ default:
+ break;
case X509_LU_X509:
case X509_LU_X509:
-
CRYPTO_add(&a->data.x509->references, 1, CRYPTO_LOCK_X
509);
+
X509_up_ref(a->data.x
509);
break;
case X509_LU_CRL:
break;
case X509_LU_CRL:
-
CRYPTO_add(&a->data.crl->references, 1, CRYPTO_LOCK_X509_CRL
);
+
X509_CRL_up_ref(a->data.crl
);
break;
}
}
break;
}
}
@@
-417,6
+401,8
@@
void X509_OBJECT_free_contents(X509_OBJECT *a)
if (!a)
return;
switch (a->type) {
if (!a)
return;
switch (a->type) {
+ default:
+ break;
case X509_LU_X509:
X509_free(a->data.x509);
break;
case X509_LU_X509:
X509_free(a->data.x509);
break;
@@
-431,22
+417,18
@@
static int x509_object_idx_cnt(STACK_OF(X509_OBJECT) *h, int type,
{
X509_OBJECT stmp;
X509 x509_s;
{
X509_OBJECT stmp;
X509 x509_s;
- X509_CINF cinf_s;
X509_CRL crl_s;
X509_CRL crl_s;
- X509_CRL_INFO crl_info_s;
int idx;
stmp.type = type;
switch (type) {
case X509_LU_X509:
stmp.data.x509 = &x509_s;
int idx;
stmp.type = type;
switch (type) {
case X509_LU_X509:
stmp.data.x509 = &x509_s;
- x509_s.cert_info = &cinf_s;
- cinf_s.subject = name;
+ x509_s.cert_info.subject = name;
break;
case X509_LU_CRL:
stmp.data.crl = &crl_s;
break;
case X509_LU_CRL:
stmp.data.crl = &crl_s;
- crl_s.crl = &crl_info_s;
- crl_info_s.issuer = name;
+ crl_s.crl.issuer = name;
break;
default:
/* abort(); */
break;
default:
/* abort(); */
@@
-517,7
+499,7
@@
STACK_OF(X509) *X509_STORE_get1_certs(X509_STORE_CTX *ctx, X509_NAME *nm)
for (i = 0; i < cnt; i++, idx++) {
obj = sk_X509_OBJECT_value(ctx->ctx->objs, idx);
x = obj->data.x509;
for (i = 0; i < cnt; i++, idx++) {
obj = sk_X509_OBJECT_value(ctx->ctx->objs, idx);
x = obj->data.x509;
-
CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509
);
+
X509_up_ref(x
);
if (!sk_X509_push(sk, x)) {
CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
X509_free(x);
if (!sk_X509_push(sk, x)) {
CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
X509_free(x);
@@
-537,14
+519,10
@@
STACK_OF(X509_CRL) *X509_STORE_get1_crls(X509_STORE_CTX *ctx, X509_NAME *nm)
X509_CRL *x;
X509_OBJECT *obj, xobj;
sk = sk_X509_CRL_new_null();
X509_CRL *x;
X509_OBJECT *obj, xobj;
sk = sk_X509_CRL_new_null();
- CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);
- /* Check cache first */
- idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_CRL, nm, &cnt);
/*
* Always do lookup to possibly add new CRLs to cache
*/
/*
* Always do lookup to possibly add new CRLs to cache
*/
- CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
if (!X509_STORE_get_by_subject(ctx, X509_LU_CRL, nm, &xobj)) {
sk_X509_CRL_free(sk);
return NULL;
if (!X509_STORE_get_by_subject(ctx, X509_LU_CRL, nm, &xobj)) {
sk_X509_CRL_free(sk);
return NULL;
@@
-561,7
+539,7
@@
STACK_OF(X509_CRL) *X509_STORE_get1_crls(X509_STORE_CTX *ctx, X509_NAME *nm)
for (i = 0; i < cnt; i++, idx++) {
obj = sk_X509_OBJECT_value(ctx->ctx->objs, idx);
x = obj->data.crl;
for (i = 0; i < cnt; i++, idx++) {
obj = sk_X509_OBJECT_value(ctx->ctx->objs, idx);
x = obj->data.crl;
-
CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509_CRL
);
+
X509_CRL_up_ref(x
);
if (!sk_X509_CRL_push(sk, x)) {
CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
X509_CRL_free(x);
if (!sk_X509_CRL_push(sk, x)) {
CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
X509_CRL_free(x);
@@
-672,7
+650,7
@@
int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x)
}
CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
if (*issuer)
}
CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
if (*issuer)
-
CRYPTO_add(&(*issuer)->references, 1, CRYPTO_LOCK_X509
);
+
X509_up_ref(*issuer
);
return ret;
}
return ret;
}