OpenCoverage

x509_lu.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/x509/x509_lu.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: x509_lu.c,v 1.30 2018/08/24 19:21:09 tb Exp $ */-
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)-
3 * All rights reserved.-
4 *-
5 * This package is an SSL implementation written-
6 * by Eric Young (eay@cryptsoft.com).-
7 * The implementation was written so as to conform with Netscapes SSL.-
8 *-
9 * This library is free for commercial and non-commercial use as long as-
10 * the following conditions are aheared to. The following conditions-
11 * apply to all code found in this distribution, be it the RC4, RSA,-
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation-
13 * included with this distribution is covered by the same copyright terms-
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).-
15 *-
16 * Copyright remains Eric Young's, and as such any Copyright notices in-
17 * the code are not to be removed.-
18 * If this package is used in a product, Eric Young should be given attribution-
19 * as the author of the parts of the library used.-
20 * This can be in the form of a textual message at program startup or-
21 * in documentation (online or textual) provided with the package.-
22 *-
23 * Redistribution and use in source and binary forms, with or without-
24 * modification, are permitted provided that the following conditions-
25 * are met:-
26 * 1. Redistributions of source code must retain the copyright-
27 * notice, this list of conditions and the following disclaimer.-
28 * 2. Redistributions in binary form must reproduce the above copyright-
29 * notice, this list of conditions and the following disclaimer in the-
30 * documentation and/or other materials provided with the distribution.-
31 * 3. All advertising materials mentioning features or use of this software-
32 * must display the following acknowledgement:-
33 * "This product includes cryptographic software written by-
34 * Eric Young (eay@cryptsoft.com)"-
35 * The word 'cryptographic' can be left out if the rouines from the library-
36 * being used are not cryptographic related :-).-
37 * 4. If you include any Windows specific code (or a derivative thereof) from-
38 * the apps directory (application code) you must include an acknowledgement:-
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"-
40 *-
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND-
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE-
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE-
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL-
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS-
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT-
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY-
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF-
51 * SUCH DAMAGE.-
52 *-
53 * The licence and distribution terms for any publically available version or-
54 * derivative of this code cannot be changed. i.e. this code cannot simply be-
55 * copied and put under another distribution licence-
56 * [including the GNU Public Licence.]-
57 */-
58-
59#include <stdio.h>-
60-
61#include <openssl/err.h>-
62#include <openssl/lhash.h>-
63#include <openssl/x509.h>-
64#include <openssl/x509v3.h>-
65#include "x509_lcl.h"-
66-
67static void X509_OBJECT_dec_ref_count(X509_OBJECT *a);-
68-
69X509_LOOKUP *-
70X509_LOOKUP_new(X509_LOOKUP_METHOD *method)-
71{-
72 X509_LOOKUP *ret;-
73-
74 ret = malloc(sizeof(X509_LOOKUP));-
75 if (ret == NULL)
ret == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 50 times by 3 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
0-50
76 return NULL;
never executed: return ((void *)0) ;
0
77-
78 ret->init = 0;-
79 ret->skip = 0;-
80 ret->method = method;-
81 ret->method_data = NULL;-
82 ret->store_ctx = NULL;-
83 if ((method->new_item != NULL) && !method->new_item(ret)) {
(method->new_i... ((void *)0) )Description
TRUEevaluated 23 times by 2 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
FALSEevaluated 27 times by 3 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
!method->new_item(ret)Description
TRUEnever evaluated
FALSEevaluated 23 times by 2 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
0-27
84 free(ret);-
85 return NULL;
never executed: return ((void *)0) ;
0
86 }-
87 return ret;
executed 50 times by 3 tests: return ret;
Executed by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
50
88}-
89-
90void-
91X509_LOOKUP_free(X509_LOOKUP *ctx)-
92{-
93 if (ctx == NULL)
ctx == ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • freenull
FALSEevaluated 50 times by 3 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
1-50
94 return;
executed 1 time by 1 test: return;
Executed by:
  • freenull
1
95 if ((ctx->method != NULL) && (ctx->method->free != NULL))
(ctx->method != ((void *)0) )Description
TRUEevaluated 50 times by 3 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
FALSEnever evaluated
(ctx->method->... ((void *)0) )Description
TRUEevaluated 23 times by 2 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
FALSEevaluated 27 times by 3 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
0-50
96 (*ctx->method->free)(ctx);
executed 23 times by 2 tests: (*ctx->method->free)(ctx);
Executed by:
  • libcrypto.so.44.0.1
  • ssltest
23
97 free(ctx);-
98}
executed 50 times by 3 tests: end of block
Executed by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
50
99-
100int-
101X509_LOOKUP_init(X509_LOOKUP *ctx)-
102{-
103 if (ctx->method == NULL)
ctx->method == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
104 return 0;
never executed: return 0;
0
105 if (ctx->method->init != NULL)
ctx->method->i...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
106 return ctx->method->init(ctx);
never executed: return ctx->method->init(ctx);
0
107 else-
108 return 1;
never executed: return 1;
0
109}-
110-
111int-
112X509_LOOKUP_shutdown(X509_LOOKUP *ctx)-
113{-
114 if (ctx->method == NULL)
ctx->method == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 50 times by 3 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
0-50
115 return 0;
never executed: return 0;
0
116 if (ctx->method->shutdown != NULL)
ctx->method->s...!= ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 50 times by 3 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
0-50
117 return ctx->method->shutdown(ctx);
never executed: return ctx->method->shutdown(ctx);
0
118 else-
119 return 1;
executed 50 times by 3 tests: return 1;
Executed by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
50
120}-
121-
122int-
123X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, long argl,-
124 char **ret)-
125{-
126 if (ctx->method == NULL)
ctx->method == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 70 times by 3 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
0-70
127 return -1;
never executed: return -1;
0
128 if (ctx->method->ctrl != NULL)
ctx->method->c...!= ((void *)0)Description
TRUEevaluated 70 times by 3 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
FALSEnever evaluated
0-70
129 return ctx->method->ctrl(ctx, cmd, argc, argl, ret);
executed 70 times by 3 tests: return ctx->method->ctrl(ctx, cmd, argc, argl, ret);
Executed by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
70
130 else-
131 return 1;
never executed: return 1;
0
132}-
133-
134int-
135X509_LOOKUP_by_subject(X509_LOOKUP *ctx, int type, X509_NAME *name,-
136 X509_OBJECT *ret)-
137{-
138 if ((ctx->method == NULL) || (ctx->method->get_by_subject == NULL))
(ctx->method == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
(ctx->method->... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
139 return X509_LU_FAIL;
never executed: return 0;
0
140 if (ctx->skip)
ctx->skipDescription
TRUEnever evaluated
FALSEnever evaluated
0
141 return 0;
never executed: return 0;
0
142 return ctx->method->get_by_subject(ctx, type, name, ret);
never executed: return ctx->method->get_by_subject(ctx, type, name, ret);
0
143}-
144-
145int-
146X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, int type, X509_NAME *name,-
147 ASN1_INTEGER *serial, X509_OBJECT *ret)-
148{-
149 if ((ctx->method == NULL) ||
(ctx->method == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
150 (ctx->method->get_by_issuer_serial == NULL))
(ctx->method->... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
151 return X509_LU_FAIL;
never executed: return 0;
0
152 return ctx->method->get_by_issuer_serial(ctx, type, name, serial, ret);
never executed: return ctx->method->get_by_issuer_serial(ctx, type, name, serial, ret);
0
153}-
154-
155int-
156X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, int type,-
157 const unsigned char *bytes, int len, X509_OBJECT *ret)-
158{-
159 if ((ctx->method == NULL) || (ctx->method->get_by_fingerprint == NULL))
(ctx->method == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
(ctx->method->... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
160 return X509_LU_FAIL;
never executed: return 0;
0
161 return ctx->method->get_by_fingerprint(ctx, type, bytes, len, ret);
never executed: return ctx->method->get_by_fingerprint(ctx, type, bytes, len, ret);
0
162}-
163-
164int-
165X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, const char *str, int len,-
166 X509_OBJECT *ret)-
167{-
168 if ((ctx->method == NULL) || (ctx->method->get_by_alias == NULL))
(ctx->method == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
(ctx->method->... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
169 return X509_LU_FAIL;
never executed: return 0;
0
170 return ctx->method->get_by_alias(ctx, type, str, len, ret);
never executed: return ctx->method->get_by_alias(ctx, type, str, len, ret);
0
171}-
172-
173static int-
174x509_object_cmp(const X509_OBJECT * const *a, const X509_OBJECT * const *b)-
175{-
176 int ret;-
177-
178 ret = ((*a)->type - (*b)->type);-
179 if (ret)
retDescription
TRUEnever evaluated
FALSEevaluated 162 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
0-162
180 return ret;
never executed: return ret;
0
181 switch ((*a)->type) {-
182 case X509_LU_X509:
executed 162 times by 2 tests: case 1:
Executed by:
  • ssltest
  • tlstest
162
183 ret = X509_subject_name_cmp((*a)->data.x509, (*b)->data.x509);-
184 break;
executed 162 times by 2 tests: break;
Executed by:
  • ssltest
  • tlstest
162
185 case X509_LU_CRL:
never executed: case 2:
0
186 ret = X509_CRL_cmp((*a)->data.crl, (*b)->data.crl);-
187 break;
never executed: break;
0
188 default:
never executed: default:
0
189 /* abort(); */-
190 return 0;
never executed: return 0;
0
191 }-
192 return ret;
executed 162 times by 2 tests: return ret;
Executed by:
  • ssltest
  • tlstest
162
193}-
194-
195X509_STORE *-
196X509_STORE_new(void)-
197{-
198 X509_STORE *ret;-
199-
200 if ((ret = malloc(sizeof(X509_STORE))) == NULL)
(ret = malloc(...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 218 times by 14 tests
Evaluated by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
0-218
201 return NULL;
never executed: return ((void *)0) ;
0
202 ret->objs = sk_X509_OBJECT_new(x509_object_cmp);-
203 ret->cache = 1;-
204 ret->get_cert_methods = sk_X509_LOOKUP_new_null();-
205 ret->verify = 0;-
206 ret->verify_cb = 0;-
207-
208 if ((ret->param = X509_VERIFY_PARAM_new()) == NULL)
(ret->param = ...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 218 times by 14 tests
Evaluated by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
0-218
209 goto err;
never executed: goto err;
0
210-
211 ret->get_issuer = 0;-
212 ret->check_issued = 0;-
213 ret->check_revocation = 0;-
214 ret->get_crl = 0;-
215 ret->check_crl = 0;-
216 ret->cert_crl = 0;-
217 ret->lookup_certs = 0;-
218 ret->lookup_crls = 0;-
219 ret->cleanup = 0;-
220-
221 if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE, ret, &ret->ex_data))
!CRYPTO_new_ex...&ret->ex_data)Description
TRUEnever evaluated
FALSEevaluated 218 times by 14 tests
Evaluated by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
0-218
222 goto err;
never executed: goto err;
0
223-
224 ret->references = 1;-
225 return ret;
executed 218 times by 14 tests: return ret;
Executed by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
218
226-
227err:-
228 X509_VERIFY_PARAM_free(ret->param);-
229 sk_X509_LOOKUP_free(ret->get_cert_methods);-
230 sk_X509_OBJECT_free(ret->objs);-
231 free(ret);-
232 return NULL;
never executed: return ((void *)0) ;
0
233}-
234-
235static void-
236X509_OBJECT_free(X509_OBJECT *a)-
237{-
238 X509_OBJECT_free_contents(a);-
239 free(a);-
240}
executed 48 times by 2 tests: end of block
Executed by:
  • ssltest
  • tlstest
48
241-
242void-
243X509_STORE_free(X509_STORE *vfy)-
244{-
245 int i;-
246 STACK_OF(X509_LOOKUP) *sk;-
247 X509_LOOKUP *lu;-
248-
249 if (vfy == NULL)
vfy == ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • freenull
FALSEevaluated 210 times by 13 tests
Evaluated by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • libcrypto.so.44.0.1
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
1-210
250 return;
executed 1 time by 1 test: return;
Executed by:
  • freenull
1
251-
252 i = CRYPTO_add(&vfy->references, -1, CRYPTO_LOCK_X509_STORE);-
253 if (i > 0)
i > 0Description
TRUEnever evaluated
FALSEevaluated 210 times by 13 tests
Evaluated by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • libcrypto.so.44.0.1
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
0-210
254 return;
never executed: return;
0
255-
256 sk = vfy->get_cert_methods;-
257 for (i = 0; i < sk_X509_LOOKUP_num(sk); i++) {
i < sk_num(((_...9_LOOKUP*)0)))Description
TRUEevaluated 50 times by 3 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
FALSEevaluated 210 times by 13 tests
Evaluated by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • libcrypto.so.44.0.1
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
50-210
258 lu = sk_X509_LOOKUP_value(sk, i);-
259 X509_LOOKUP_shutdown(lu);-
260 X509_LOOKUP_free(lu);-
261 }
executed 50 times by 3 tests: end of block
Executed by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
50
262 sk_X509_LOOKUP_free(sk);-
263 sk_X509_OBJECT_pop_free(vfy->objs, X509_OBJECT_free);-
264-
265 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_X509_STORE, vfy, &vfy->ex_data);-
266 X509_VERIFY_PARAM_free(vfy->param);-
267 free(vfy);-
268}
executed 210 times by 13 tests: end of block
Executed by:
  • cipher_list
  • cipherstest
  • clienttest
  • configtest
  • libcrypto.so.44.0.1
  • servertest
  • ssl_versions
  • ssltest
  • tls_ext_alpn
  • tls_prf
  • tlsexttest
  • tlstest
  • verifytest
210
269-
270int-
271X509_STORE_up_ref(X509_STORE *x)-
272{-
273 int refs = CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509_STORE);-
274 return (refs > 1) ? 1 : 0;
never executed: return (refs > 1) ? 1 : 0;
(refs > 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
275}-
276-
277X509_LOOKUP *-
278X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m)-
279{-
280 int i;-
281 STACK_OF(X509_LOOKUP) *sk;-
282 X509_LOOKUP *lu;-
283-
284 sk = v->get_cert_methods;-
285 for (i = 0; i < sk_X509_LOOKUP_num(sk); i++) {
i < sk_num(((_...9_LOOKUP*)0)))Description
TRUEevaluated 43 times by 2 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
FALSEevaluated 50 times by 3 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
43-50
286 lu = sk_X509_LOOKUP_value(sk, i);-
287 if (m == lu->method) {
m == lu->methodDescription
TRUEevaluated 20 times by 1 test
Evaluated by:
  • ssltest
FALSEevaluated 23 times by 2 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
20-23
288 return lu;
executed 20 times by 1 test: return lu;
Executed by:
  • ssltest
20
289 }-
290 }
executed 23 times by 2 tests: end of block
Executed by:
  • libcrypto.so.44.0.1
  • ssltest
23
291 /* a new one */-
292 lu = X509_LOOKUP_new(m);-
293 if (lu == NULL)
lu == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 50 times by 3 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
0-50
294 return NULL;
never executed: return ((void *)0) ;
0
295 else {-
296 lu->store_ctx = v;-
297 if (sk_X509_LOOKUP_push(v->get_cert_methods, lu))
sk_push(((_STA...9_LOOKUP*)0)))Description
TRUEevaluated 50 times by 3 tests
Evaluated by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
FALSEnever evaluated
0-50
298 return lu;
executed 50 times by 3 tests: return lu;
Executed by:
  • libcrypto.so.44.0.1
  • ssltest
  • tlstest
50
299 else {-
300 X509_LOOKUP_free(lu);-
301 return NULL;
never executed: return ((void *)0) ;
0
302 }-
303 }-
304}-
305-
306int-
307X509_STORE_get_by_subject(X509_STORE_CTX *vs, int type, X509_NAME *name,-
308 X509_OBJECT *ret)-
309{-
310 X509_STORE *ctx = vs->ctx;-
311 X509_LOOKUP *lu;-
312 X509_OBJECT stmp, *tmp;-
313 int i, j;-
314-
315 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);-
316 tmp = X509_OBJECT_retrieve_by_subject(ctx->objs, type, name);-
317 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);-
318-
319 if (tmp == NULL || type == X509_LU_CRL) {
tmp == ((void *)0)Description
TRUEevaluated 86 times by 4 tests
Evaluated by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 57 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
type == 2Description
TRUEnever evaluated
FALSEevaluated 57 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
0-86
320 for (i = vs->current_method;-
321 i < sk_X509_LOOKUP_num(ctx->get_cert_methods); i++) {
i < sk_num(((_...9_LOOKUP*)0)))Description
TRUEnever evaluated
FALSEevaluated 86 times by 4 tests
Evaluated by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
0-86
322 lu = sk_X509_LOOKUP_value(ctx->get_cert_methods, i);-
323 j = X509_LOOKUP_by_subject(lu, type, name, &stmp);-
324 if (j < 0) {
j < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
325 vs->current_method = j;-
326 return j;
never executed: return j;
0
327 } else if (j) {
jDescription
TRUEnever evaluated
FALSEnever evaluated
0
328 tmp = &stmp;-
329 break;
never executed: break;
0
330 }-
331 }
never executed: end of block
0
332 vs->current_method = 0;-
333 if (tmp == NULL)
tmp == ((void *)0)Description
TRUEevaluated 86 times by 4 tests
Evaluated by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
FALSEnever evaluated
0-86
334 return 0;
executed 86 times by 4 tests: return 0;
Executed by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
86
335 }
never executed: end of block
0
336-
337/* if (ret->data.ptr != NULL)-
338 X509_OBJECT_free_contents(ret); */-
339-
340 ret->type = tmp->type;-
341 ret->data.ptr = tmp->data.ptr;-
342-
343 X509_OBJECT_up_ref_count(ret);-
344-
345 return 1;
executed 57 times by 2 tests: return 1;
Executed by:
  • ssltest
  • tlstest
57
346}-
347-
348int-
349X509_STORE_add_cert(X509_STORE *ctx, X509 *x)-
350{-
351 X509_OBJECT *obj;-
352 int ret = 1;-
353-
354 if (x == NULL)
x == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 48 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
0-48
355 return 0;
never executed: return 0;
0
356 obj = malloc(sizeof(X509_OBJECT));-
357 if (obj == NULL) {
obj == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 48 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
0-48
358 X509error(ERR_R_MALLOC_FAILURE);-
359 return 0;
never executed: return 0;
0
360 }-
361 obj->type = X509_LU_X509;-
362 obj->data.x509 = x;-
363-
364 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);-
365-
366 X509_OBJECT_up_ref_count(obj);-
367-
368 if (X509_OBJECT_retrieve_match(ctx->objs, obj)) {
X509_OBJECT_re...tx->objs, obj)Description
TRUEnever evaluated
FALSEevaluated 48 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
0-48
369 X509error(X509_R_CERT_ALREADY_IN_HASH_TABLE);-
370 ret = 0;-
371 } else {
never executed: end of block
0
372 if (sk_X509_OBJECT_push(ctx->objs, obj) == 0) {
sk_push(((_STA...ECT*)0))) == 0Description
TRUEnever evaluated
FALSEevaluated 48 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
0-48
373 X509error(ERR_R_MALLOC_FAILURE);-
374 ret = 0;-
375 }
never executed: end of block
0
376 }
executed 48 times by 2 tests: end of block
Executed by:
  • ssltest
  • tlstest
48
377-
378 if (ret == 0)
ret == 0Description
TRUEnever evaluated
FALSEevaluated 48 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
0-48
379 X509_OBJECT_dec_ref_count(obj);
never executed: X509_OBJECT_dec_ref_count(obj);
0
380-
381 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);-
382-
383 if (ret == 0) {
ret == 0Description
TRUEnever evaluated
FALSEevaluated 48 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
0-48
384 obj->data.x509 = NULL; /* owned by the caller */-
385 X509_OBJECT_free(obj);-
386 }
never executed: end of block
0
387-
388 return ret;
executed 48 times by 2 tests: return ret;
Executed by:
  • ssltest
  • tlstest
48
389}-
390-
391int-
392X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x)-
393{-
394 X509_OBJECT *obj;-
395 int ret = 1;-
396-
397 if (x == NULL)
x == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
398 return 0;
never executed: return 0;
0
399 obj = malloc(sizeof(X509_OBJECT));-
400 if (obj == NULL) {
obj == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
401 X509error(ERR_R_MALLOC_FAILURE);-
402 return 0;
never executed: return 0;
0
403 }-
404 obj->type = X509_LU_CRL;-
405 obj->data.crl = x;-
406-
407 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);-
408-
409 X509_OBJECT_up_ref_count(obj);-
410-
411 if (X509_OBJECT_retrieve_match(ctx->objs, obj)) {
X509_OBJECT_re...tx->objs, obj)Description
TRUEnever evaluated
FALSEnever evaluated
0
412 X509error(X509_R_CERT_ALREADY_IN_HASH_TABLE);-
413 ret = 0;-
414 } else {
never executed: end of block
0
415 if (sk_X509_OBJECT_push(ctx->objs, obj) == 0) {
sk_push(((_STA...ECT*)0))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
416 X509error(ERR_R_MALLOC_FAILURE);-
417 ret = 0;-
418 }
never executed: end of block
0
419 }
never executed: end of block
0
420-
421 if (ret == 0)
ret == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
422 X509_OBJECT_dec_ref_count(obj);
never executed: X509_OBJECT_dec_ref_count(obj);
0
423-
424 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);-
425-
426 if (ret == 0) {
ret == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
427 obj->data.crl = NULL; /* owned by the caller */-
428 X509_OBJECT_free(obj);-
429 }
never executed: end of block
0
430-
431 return ret;
never executed: return ret;
0
432}-
433-
434static void-
435X509_OBJECT_dec_ref_count(X509_OBJECT *a)-
436{-
437 switch (a->type) {-
438 case X509_LU_X509:
never executed: case 1:
0
439 CRYPTO_add(&a->data.x509->references, -1, CRYPTO_LOCK_X509);-
440 break;
never executed: break;
0
441 case X509_LU_CRL:
never executed: case 2:
0
442 CRYPTO_add(&a->data.crl->references, -1, CRYPTO_LOCK_X509_CRL);-
443 break;
never executed: break;
0
444 }-
445}
never executed: end of block
0
446-
447int-
448X509_OBJECT_up_ref_count(X509_OBJECT *a)-
449{-
450 switch (a->type) {-
451 case X509_LU_X509:
executed 105 times by 2 tests: case 1:
Executed by:
  • ssltest
  • tlstest
105
452 return X509_up_ref(a->data.x509);
executed 105 times by 2 tests: return X509_up_ref(a->data.x509);
Executed by:
  • ssltest
  • tlstest
105
453 case X509_LU_CRL:
never executed: case 2:
0
454 return X509_CRL_up_ref(a->data.crl);
never executed: return X509_CRL_up_ref(a->data.crl);
0
455 }-
456 return 1;
never executed: return 1;
0
457}-
458-
459int-
460X509_OBJECT_get_type(const X509_OBJECT *a)-
461{-
462 return a->type;
never executed: return a->type;
0
463}-
464-
465void-
466X509_OBJECT_free_contents(X509_OBJECT *a)-
467{-
468 switch (a->type) {-
469 case X509_LU_X509:
executed 48 times by 2 tests: case 1:
Executed by:
  • ssltest
  • tlstest
48
470 X509_free(a->data.x509);-
471 break;
executed 48 times by 2 tests: break;
Executed by:
  • ssltest
  • tlstest
48
472 case X509_LU_CRL:
never executed: case 2:
0
473 X509_CRL_free(a->data.crl);-
474 break;
never executed: break;
0
475 }-
476}
executed 48 times by 2 tests: end of block
Executed by:
  • ssltest
  • tlstest
48
477-
478static int-
479x509_object_idx_cnt(STACK_OF(X509_OBJECT) *h, int type, X509_NAME *name,-
480 int *pnmatch)-
481{-
482 X509_OBJECT stmp;-
483 X509 x509_s;-
484 X509_CINF cinf_s;-
485 X509_CRL crl_s;-
486 X509_CRL_INFO crl_info_s;-
487 int idx;-
488-
489 stmp.type = type;-
490 switch (type) {-
491 case X509_LU_X509:
executed 143 times by 4 tests: case 1:
Executed by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
143
492 stmp.data.x509 = &x509_s;-
493 x509_s.cert_info = &cinf_s;-
494 cinf_s.subject = name;-
495 break;
executed 143 times by 4 tests: break;
Executed by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
143
496 case X509_LU_CRL:
never executed: case 2:
0
497 stmp.data.crl = &crl_s;-
498 crl_s.crl = &crl_info_s;-
499 crl_info_s.issuer = name;-
500 break;
never executed: break;
0
501 default:
never executed: default:
0
502 /* abort(); */-
503 return -1;
never executed: return -1;
0
504 }-
505-
506 idx = sk_X509_OBJECT_find(h, &stmp);-
507 if (idx >= 0 && pnmatch) {
idx >= 0Description
TRUEevaluated 57 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
FALSEevaluated 86 times by 4 tests
Evaluated by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
pnmatchDescription
TRUEnever evaluated
FALSEevaluated 57 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
0-86
508 int tidx;-
509 const X509_OBJECT *tobj, *pstmp;-
510 *pnmatch = 1;-
511 pstmp = &stmp;-
512 for (tidx = idx + 1; tidx < sk_X509_OBJECT_num(h); tidx++) {
tidx < sk_num(...9_OBJECT*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
513 tobj = sk_X509_OBJECT_value(h, tidx);-
514 if (x509_object_cmp(&tobj, &pstmp))
x509_object_cmp(&tobj, &pstmp)Description
TRUEnever evaluated
FALSEnever evaluated
0
515 break;
never executed: break;
0
516 (*pnmatch)++;-
517 }
never executed: end of block
0
518 }
never executed: end of block
0
519 return idx;
executed 143 times by 4 tests: return idx;
Executed by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
143
520}-
521-
522int-
523X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, int type, X509_NAME *name)-
524{-
525 return x509_object_idx_cnt(h, type, name, NULL);
executed 143 times by 4 tests: return x509_object_idx_cnt(h, type, name, ((void *)0) );
Executed by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
143
526}-
527-
528X509_OBJECT *-
529X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, int type,-
530 X509_NAME *name)-
531{-
532 int idx;-
533-
534 idx = X509_OBJECT_idx_by_subject(h, type, name);-
535 if (idx == -1)
idx == -1Description
TRUEevaluated 86 times by 4 tests
Evaluated by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 57 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
57-86
536 return NULL;
executed 86 times by 4 tests: return ((void *)0) ;
Executed by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
86
537 return sk_X509_OBJECT_value(h, idx);
executed 57 times by 2 tests: return ((X509_OBJECT *)sk_value(((_STACK*) (1 ? (h) : (struct stack_st_X509_OBJECT*)0)), (idx)));
Executed by:
  • ssltest
  • tlstest
57
538}-
539-
540X509 *-
541X509_OBJECT_get0_X509(const X509_OBJECT *xo)-
542{-
543 if (xo != NULL && xo->type == X509_LU_X509)
xo != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
xo->type == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
544 return xo->data.x509;
never executed: return xo->data.x509;
0
545 return NULL;
never executed: return ((void *)0) ;
0
546}-
547-
548X509_CRL *-
549X509_OBJECT_get0_X509_CRL(X509_OBJECT *xo)-
550{-
551 if (xo != NULL && xo->type == X509_LU_CRL)
xo != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
xo->type == 2Description
TRUEnever evaluated
FALSEnever evaluated
0
552 return xo->data.crl;
never executed: return xo->data.crl;
0
553 return NULL;
never executed: return ((void *)0) ;
0
554}-
555-
556STACK_OF(X509) *-
557X509_STORE_get1_certs(X509_STORE_CTX *ctx, X509_NAME *nm)-
558{-
559 int i, idx, cnt;-
560 STACK_OF(X509) *sk;-
561 X509 *x;-
562 X509_OBJECT *obj;-
563-
564 sk = sk_X509_new_null();-
565 if (sk == NULL)
sk == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
566 return NULL;
never executed: return ((void *)0) ;
0
567 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);-
568 idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_X509, nm, &cnt);-
569 if (idx < 0) {
idx < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
570 /* Nothing found in cache: do lookup to possibly add new-
571 * objects to cache-
572 */-
573 X509_OBJECT xobj;-
574 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);-
575 if (!X509_STORE_get_by_subject(ctx, X509_LU_X509, nm, &xobj)) {
!X509_STORE_ge... 1, nm, &xobj)Description
TRUEnever evaluated
FALSEnever evaluated
0
576 sk_X509_free(sk);-
577 return NULL;
never executed: return ((void *)0) ;
0
578 }-
579 X509_OBJECT_free_contents(&xobj);-
580 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);-
581 idx = x509_object_idx_cnt(ctx->ctx->objs,-
582 X509_LU_X509, nm, &cnt);-
583 if (idx < 0) {
idx < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
584 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);-
585 sk_X509_free(sk);-
586 return NULL;
never executed: return ((void *)0) ;
0
587 }-
588 }
never executed: end of block
0
589 for (i = 0; i < cnt; i++, idx++) {
i < cntDescription
TRUEnever evaluated
FALSEnever evaluated
0
590 obj = sk_X509_OBJECT_value(ctx->ctx->objs, idx);-
591 x = obj->data.x509;-
592 CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509);-
593 if (!sk_X509_push(sk, x)) {
!sk_push(((_ST... : (X509*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
594 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);-
595 X509_free(x);-
596 sk_X509_pop_free(sk, X509_free);-
597 return NULL;
never executed: return ((void *)0) ;
0
598 }-
599 }
never executed: end of block
0
600 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);-
601 return sk;
never executed: return sk;
0
602-
603}-
604-
605STACK_OF(X509_CRL) *-
606X509_STORE_get1_crls(X509_STORE_CTX *ctx, X509_NAME *nm)-
607{-
608 int i, idx, cnt;-
609 STACK_OF(X509_CRL) *sk;-
610 X509_CRL *x;-
611 X509_OBJECT *obj, xobj;-
612-
613 sk = sk_X509_CRL_new_null();-
614 if (sk == NULL)
sk == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
615 return NULL;
never executed: return ((void *)0) ;
0
616 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);-
617 /* Check cache first */-
618 idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_CRL, nm, &cnt);-
619-
620 /* Always do lookup to possibly add new CRLs to cache-
621 */-
622 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);-
623 if (!X509_STORE_get_by_subject(ctx, X509_LU_CRL, nm, &xobj)) {
!X509_STORE_ge... 2, nm, &xobj)Description
TRUEnever evaluated
FALSEnever evaluated
0
624 sk_X509_CRL_free(sk);-
625 return NULL;
never executed: return ((void *)0) ;
0
626 }-
627 X509_OBJECT_free_contents(&xobj);-
628 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);-
629 idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_CRL, nm, &cnt);-
630 if (idx < 0) {
idx < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
631 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);-
632 sk_X509_CRL_free(sk);-
633 return NULL;
never executed: return ((void *)0) ;
0
634 }-
635-
636 for (i = 0; i < cnt; i++, idx++) {
i < cntDescription
TRUEnever evaluated
FALSEnever evaluated
0
637 obj = sk_X509_OBJECT_value(ctx->ctx->objs, idx);-
638 x = obj->data.crl;-
639 CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509_CRL);-
640 if (!sk_X509_CRL_push(sk, x)) {
!sk_push(((_ST...X509_CRL*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
641 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);-
642 X509_CRL_free(x);-
643 sk_X509_CRL_pop_free(sk, X509_CRL_free);-
644 return NULL;
never executed: return ((void *)0) ;
0
645 }-
646 }
never executed: end of block
0
647 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);-
648 return sk;
never executed: return sk;
0
649}-
650-
651X509_OBJECT *-
652X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, X509_OBJECT *x)-
653{-
654 int idx, i;-
655 X509_OBJECT *obj;-
656-
657 idx = sk_X509_OBJECT_find(h, x);-
658 if (idx == -1)
idx == -1Description
TRUEevaluated 48 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
FALSEnever evaluated
0-48
659 return NULL;
executed 48 times by 2 tests: return ((void *)0) ;
Executed by:
  • ssltest
  • tlstest
48
660 if ((x->type != X509_LU_X509) && (x->type != X509_LU_CRL))
(x->type != 1)Description
TRUEnever evaluated
FALSEnever evaluated
(x->type != 2)Description
TRUEnever evaluated
FALSEnever evaluated
0
661 return sk_X509_OBJECT_value(h, idx);
never executed: return ((X509_OBJECT *)sk_value(((_STACK*) (1 ? (h) : (struct stack_st_X509_OBJECT*)0)), (idx)));
0
662 for (i = idx; i < sk_X509_OBJECT_num(h); i++) {
i < sk_num(((_...9_OBJECT*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
663 obj = sk_X509_OBJECT_value(h, i);-
664 if (x509_object_cmp((const X509_OBJECT **)&obj,
x509_object_cm..._OBJECT **)&x)Description
TRUEnever evaluated
FALSEnever evaluated
0
665 (const X509_OBJECT **)&x))
x509_object_cm..._OBJECT **)&x)Description
TRUEnever evaluated
FALSEnever evaluated
0
666 return NULL;
never executed: return ((void *)0) ;
0
667 if (x->type == X509_LU_X509) {
x->type == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
668 if (!X509_cmp(obj->data.x509, x->data.x509))
!X509_cmp(obj-... x->data.x509)Description
TRUEnever evaluated
FALSEnever evaluated
0
669 return obj;
never executed: return obj;
0
670 } else if (x->type == X509_LU_CRL) {
never executed: end of block
x->type == 2Description
TRUEnever evaluated
FALSEnever evaluated
0
671 if (!X509_CRL_match(obj->data.crl, x->data.crl))
!X509_CRL_matc..., x->data.crl)Description
TRUEnever evaluated
FALSEnever evaluated
0
672 return obj;
never executed: return obj;
0
673 } else
never executed: end of block
0
674 return obj;
never executed: return obj;
0
675 }-
676 return NULL;
never executed: return ((void *)0) ;
0
677}-
678-
679/* Try to get issuer certificate from store. Due to limitations-
680 * of the API this can only retrieve a single certificate matching-
681 * a given subject name. However it will fill the cache with all-
682 * matching certificates, so we can examine the cache for all-
683 * matches.-
684 *-
685 * Return values are:-
686 * 1 lookup successful.-
687 * 0 certificate not found.-
688 * -1 some other error.-
689 */-
690int-
691X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x)-
692{-
693 X509_NAME *xn;-
694 X509_OBJECT obj, *pobj;-
695 int i, ok, idx, ret;-
696-
697 *issuer = NULL;-
698 xn = X509_get_issuer_name(x);-
699 ok = X509_STORE_get_by_subject(ctx, X509_LU_X509, xn, &obj);-
700 if (ok != X509_LU_X509) {
ok != 1Description
TRUEevaluated 86 times by 4 tests
Evaluated by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 57 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
57-86
701 if (ok == X509_LU_RETRY) {
ok == -1Description
TRUEnever evaluated
FALSEevaluated 86 times by 4 tests
Evaluated by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
0-86
702 X509_OBJECT_free_contents(&obj);-
703 X509error(X509_R_SHOULD_RETRY);-
704 return -1;
never executed: return -1;
0
705 } else if (ok != X509_LU_FAIL) {
ok != 0Description
TRUEnever evaluated
FALSEevaluated 86 times by 4 tests
Evaluated by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
0-86
706 X509_OBJECT_free_contents(&obj);-
707 /* not good :-(, break anyway */-
708 return -1;
never executed: return -1;
0
709 }-
710 return 0;
executed 86 times by 4 tests: return 0;
Executed by:
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
86
711 }-
712 /* If certificate matches all OK */-
713 if (ctx->check_issued(ctx, x, obj.data.x509)) {
ctx->check_iss...obj.data.x509)Description
TRUEevaluated 57 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
FALSEnever evaluated
0-57
714 if (x509_check_cert_time(ctx, obj.data.x509, 1)) {
x509_check_cer....data.x509, 1)Description
TRUEevaluated 57 times by 2 tests
Evaluated by:
  • ssltest
  • tlstest
FALSEnever evaluated
0-57
715 *issuer = obj.data.x509;-
716 return 1;
executed 57 times by 2 tests: return 1;
Executed by:
  • ssltest
  • tlstest
57
717 }-
718 }
never executed: end of block
0
719 X509_OBJECT_free_contents(&obj);-
720-
721 /* Else find index of first cert accepted by 'check_issued' */-
722 ret = 0;-
723 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);-
724 idx = X509_OBJECT_idx_by_subject(ctx->ctx->objs, X509_LU_X509, xn);-
725 if (idx != -1) /* should be true as we've had at least one match */ {
idx != -1Description
TRUEnever evaluated
FALSEnever evaluated
0
726 /* Look through all matching certs for suitable issuer */-
727 for (i = idx; i < sk_X509_OBJECT_num(ctx->ctx->objs); i++) {
i < sk_num(((_...9_OBJECT*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
728 pobj = sk_X509_OBJECT_value(ctx->ctx->objs, i);-
729 /* See if we've run past the matches */-
730 if (pobj->type != X509_LU_X509)
pobj->type != 1Description
TRUEnever evaluated
FALSEnever evaluated
0
731 break;
never executed: break;
0
732 if (X509_NAME_cmp(xn,
X509_NAME_cmp(...j->data.x509))Description
TRUEnever evaluated
FALSEnever evaluated
0
733 X509_get_subject_name(pobj->data.x509)))
X509_NAME_cmp(...j->data.x509))Description
TRUEnever evaluated
FALSEnever evaluated
0
734 break;
never executed: break;
0
735 if (ctx->check_issued(ctx, x, pobj->data.x509)) {
ctx->check_iss...bj->data.x509)Description
TRUEnever evaluated
FALSEnever evaluated
0
736 *issuer = pobj->data.x509;-
737 ret = 1;-
738 /*-
739 * If times check, exit with match,-
740 * otherwise keep looking. Leave last-
741 * match in issuer so we return nearest-
742 * match if no certificate time is OK.-
743 */-
744 if (x509_check_cert_time(ctx, *issuer, 1))
x509_check_cer...x, *issuer, 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
745 break;
never executed: break;
0
746 }
never executed: end of block
0
747 }
never executed: end of block
0
748 }
never executed: end of block
0
749 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);-
750 if (*issuer)
*issuerDescription
TRUEnever evaluated
FALSEnever evaluated
0
751 CRYPTO_add(&(*issuer)->references, 1, CRYPTO_LOCK_X509);
never executed: CRYPTO_add_lock(&(*issuer)->references,1,3,__FILE__,751);
0
752 return ret;
never executed: return ret;
0
753}-
754-
755STACK_OF(X509_OBJECT) *-
756X509_STORE_get0_objects(X509_STORE *xs)-
757{-
758 return xs->objs;
never executed: return xs->objs;
0
759}-
760-
761void *-
762X509_STORE_get_ex_data(X509_STORE *xs, int idx)-
763{-
764 return CRYPTO_get_ex_data(&xs->ex_data, idx);
never executed: return CRYPTO_get_ex_data(&xs->ex_data, idx);
0
765}-
766-
767int-
768X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data)-
769{-
770 return CRYPTO_set_ex_data(&xs->ex_data, idx, data);
never executed: return CRYPTO_set_ex_data(&xs->ex_data, idx, data);
0
771}-
772-
773int-
774X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags)-
775{-
776 return X509_VERIFY_PARAM_set_flags(ctx->param, flags);
never executed: return X509_VERIFY_PARAM_set_flags(ctx->param, flags);
0
777}-
778-
779int-
780X509_STORE_set_depth(X509_STORE *ctx, int depth)-
781{-
782 X509_VERIFY_PARAM_set_depth(ctx->param, depth);-
783 return 1;
never executed: return 1;
0
784}-
785-
786int-
787X509_STORE_set_purpose(X509_STORE *ctx, int purpose)-
788{-
789 return X509_VERIFY_PARAM_set_purpose(ctx->param, purpose);
never executed: return X509_VERIFY_PARAM_set_purpose(ctx->param, purpose);
0
790}-
791-
792int-
793X509_STORE_set_trust(X509_STORE *ctx, int trust)-
794{-
795 return X509_VERIFY_PARAM_set_trust(ctx->param, trust);
never executed: return X509_VERIFY_PARAM_set_trust(ctx->param, trust);
0
796}-
797-
798int-
799X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *param)-
800{-
801 return X509_VERIFY_PARAM_set1(ctx->param, param);
never executed: return X509_VERIFY_PARAM_set1(ctx->param, param);
0
802}-
803-
804X509_VERIFY_PARAM *-
805X509_STORE_get0_param(X509_STORE *ctx)-
806{-
807 return ctx->param;
never executed: return ctx->param;
0
808}-
809-
810void-
811X509_STORE_set_verify_cb(X509_STORE *ctx,-
812 int (*verify_cb)(int, X509_STORE_CTX *))-
813{-
814 ctx->verify_cb = verify_cb;-
815}
executed 4 times by 2 tests: end of block
Executed by:
  • libcrypto.so.44.0.1
  • pkcs7test
4
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2