Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/ssl/ssl_cert.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||
2 | - | |||||||||||||||||||
3 | - | |||||||||||||||||||
4 | - | |||||||||||||||||||
5 | int | - | ||||||||||||||||||
6 | SSL_get_ex_data_X509_STORE_CTX_idx(void) | - | ||||||||||||||||||
7 | { | - | ||||||||||||||||||
8 | static volatile int ssl_x509_store_ctx_idx = -1; | - | ||||||||||||||||||
9 | int got_write_lock = 0; | - | ||||||||||||||||||
10 | - | |||||||||||||||||||
11 | CRYPTO_lock(1|4,12,__FILE__,139); | - | ||||||||||||||||||
12 | - | |||||||||||||||||||
13 | if (ssl_x509_store_ctx_idx < 0
| 63-211 | ||||||||||||||||||
14 | CRYPTO_lock(2|4,12,__FILE__,142); | - | ||||||||||||||||||
15 | CRYPTO_lock(1|8,12,__FILE__,143); | - | ||||||||||||||||||
16 | got_write_lock = 1; | - | ||||||||||||||||||
17 | - | |||||||||||||||||||
18 | if (ssl_x509_store_ctx_idx < 0
| 0-63 | ||||||||||||||||||
19 | ssl_x509_store_ctx_idx = | - | ||||||||||||||||||
20 | X509_STORE_CTX_get_ex_new_index( | - | ||||||||||||||||||
21 | 0, "SSL for verify callback", | - | ||||||||||||||||||
22 | ((void *)0) | - | ||||||||||||||||||
23 | , | - | ||||||||||||||||||
24 | ((void *)0) | - | ||||||||||||||||||
25 | , | - | ||||||||||||||||||
26 | ((void *)0) | - | ||||||||||||||||||
27 | ); | - | ||||||||||||||||||
28 | } executed 63 times by 13 tests: end of block Executed by:
| 63 | ||||||||||||||||||
29 | } executed 63 times by 13 tests: end of block Executed by:
| 63 | ||||||||||||||||||
30 | - | |||||||||||||||||||
31 | if (got_write_lock
| 63-211 | ||||||||||||||||||
32 | CRYPTO_lock(2|8,12,__FILE__,154); executed 63 times by 13 tests: CRYPTO_lock(2|8,12,__FILE__,154); Executed by:
| 63 | ||||||||||||||||||
33 | else | - | ||||||||||||||||||
34 | CRYPTO_lock(2|4,12,__FILE__,156); executed 211 times by 8 tests: CRYPTO_lock(2|4,12,__FILE__,156); Executed by:
| 211 | ||||||||||||||||||
35 | - | |||||||||||||||||||
36 | return executed 274 times by 13 tests: ssl_x509_store_ctx_idx;return ssl_x509_store_ctx_idx; Executed by:
executed 274 times by 13 tests: return ssl_x509_store_ctx_idx; Executed by:
| 274 | ||||||||||||||||||
37 | } | - | ||||||||||||||||||
38 | - | |||||||||||||||||||
39 | static void | - | ||||||||||||||||||
40 | ssl_cert_set_default_md(CERT *cert) | - | ||||||||||||||||||
41 | { | - | ||||||||||||||||||
42 | - | |||||||||||||||||||
43 | cert->pkeys[1].digest = EVP_sha1(); | - | ||||||||||||||||||
44 | cert->pkeys[0].digest = EVP_sha1(); | - | ||||||||||||||||||
45 | cert->pkeys[3].digest = EVP_sha1(); | - | ||||||||||||||||||
46 | - | |||||||||||||||||||
47 | cert->pkeys[4].digest = EVP_gostr341194(); | - | ||||||||||||||||||
48 | - | |||||||||||||||||||
49 | } executed 416 times by 13 tests: end of block Executed by:
| 416 | ||||||||||||||||||
50 | - | |||||||||||||||||||
51 | CERT * | - | ||||||||||||||||||
52 | ssl_cert_new(void) | - | ||||||||||||||||||
53 | { | - | ||||||||||||||||||
54 | CERT *ret; | - | ||||||||||||||||||
55 | - | |||||||||||||||||||
56 | ret = calloc(1, sizeof(CERT)); | - | ||||||||||||||||||
57 | if (ret ==
| 0-214 | ||||||||||||||||||
58 | ((void *)0)
| 0-214 | ||||||||||||||||||
59 | ) { | - | ||||||||||||||||||
60 | ERR_put_error(20,(0xfff),((1|64)),__FILE__,180); | - | ||||||||||||||||||
61 | return never executed: (return ( ((void *)0) ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
62 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
63 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
64 | } | - | ||||||||||||||||||
65 | ret->key = &(ret->pkeys[0]); | - | ||||||||||||||||||
66 | ret->references = 1; | - | ||||||||||||||||||
67 | ssl_cert_set_default_md(ret); | - | ||||||||||||||||||
68 | return executed 214 times by 13 tests: (ret);return (ret); Executed by:
executed 214 times by 13 tests: return (ret); Executed by:
| 214 | ||||||||||||||||||
69 | } | - | ||||||||||||||||||
70 | - | |||||||||||||||||||
71 | CERT * | - | ||||||||||||||||||
72 | ssl_cert_dup(CERT *cert) | - | ||||||||||||||||||
73 | { | - | ||||||||||||||||||
74 | CERT *ret; | - | ||||||||||||||||||
75 | int i; | - | ||||||||||||||||||
76 | - | |||||||||||||||||||
77 | ret = calloc(1, sizeof(CERT)); | - | ||||||||||||||||||
78 | if (ret ==
| 0-202 | ||||||||||||||||||
79 | ((void *)0)
| 0-202 | ||||||||||||||||||
80 | ) { | - | ||||||||||||||||||
81 | ERR_put_error(20,(0xfff),((1|64)),__FILE__,197); | - | ||||||||||||||||||
82 | return never executed: (return ( ((void *)0) ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
83 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
84 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
85 | } | - | ||||||||||||||||||
86 | - | |||||||||||||||||||
87 | - | |||||||||||||||||||
88 | - | |||||||||||||||||||
89 | - | |||||||||||||||||||
90 | - | |||||||||||||||||||
91 | ret->key = &ret->pkeys[cert->key - &cert->pkeys[0]]; | - | ||||||||||||||||||
92 | - | |||||||||||||||||||
93 | ret->valid = cert->valid; | - | ||||||||||||||||||
94 | ret->mask_k = cert->mask_k; | - | ||||||||||||||||||
95 | ret->mask_a = cert->mask_a; | - | ||||||||||||||||||
96 | - | |||||||||||||||||||
97 | if (cert->dh_tmp !=
| 49-153 | ||||||||||||||||||
98 | ((void *)0)
| 49-153 | ||||||||||||||||||
99 | ) { | - | ||||||||||||||||||
100 | ret->dh_tmp = DHparams_dup(cert->dh_tmp); | - | ||||||||||||||||||
101 | if (ret->dh_tmp ==
| 0-49 | ||||||||||||||||||
102 | ((void *)0)
| 0-49 | ||||||||||||||||||
103 | ) { | - | ||||||||||||||||||
104 | ERR_put_error(20,(0xfff),(5),__FILE__,214); | - | ||||||||||||||||||
105 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
106 | } | - | ||||||||||||||||||
107 | if (cert->dh_tmp->priv_key
| 0-49 | ||||||||||||||||||
108 | BIGNUM *b = BN_dup(cert->dh_tmp->priv_key); | - | ||||||||||||||||||
109 | if (!b
| 0 | ||||||||||||||||||
110 | ERR_put_error(20,(0xfff),(3),__FILE__,220); | - | ||||||||||||||||||
111 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
112 | } | - | ||||||||||||||||||
113 | ret->dh_tmp->priv_key = b; | - | ||||||||||||||||||
114 | } never executed: end of block | 0 | ||||||||||||||||||
115 | if (cert->dh_tmp->pub_key
| 0-49 | ||||||||||||||||||
116 | BIGNUM *b = BN_dup(cert->dh_tmp->pub_key); | - | ||||||||||||||||||
117 | if (!b
| 0 | ||||||||||||||||||
118 | ERR_put_error(20,(0xfff),(3),__FILE__,228); | - | ||||||||||||||||||
119 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
120 | } | - | ||||||||||||||||||
121 | ret->dh_tmp->pub_key = b; | - | ||||||||||||||||||
122 | } never executed: end of block | 0 | ||||||||||||||||||
123 | } executed 49 times by 1 test: end of block Executed by:
| 49 | ||||||||||||||||||
124 | ret->dh_tmp_cb = cert->dh_tmp_cb; | - | ||||||||||||||||||
125 | ret->dh_tmp_auto = cert->dh_tmp_auto; | - | ||||||||||||||||||
126 | - | |||||||||||||||||||
127 | if (cert->ecdh_tmp
| 0-202 | ||||||||||||||||||
128 | ret->ecdh_tmp = EC_KEY_dup(cert->ecdh_tmp); | - | ||||||||||||||||||
129 | if (ret->ecdh_tmp ==
| 0 | ||||||||||||||||||
130 | ((void *)0)
| 0 | ||||||||||||||||||
131 | ) { | - | ||||||||||||||||||
132 | ERR_put_error(20,(0xfff),(16),__FILE__,240); | - | ||||||||||||||||||
133 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
134 | } | - | ||||||||||||||||||
135 | } never executed: end of block | 0 | ||||||||||||||||||
136 | - | |||||||||||||||||||
137 | for (i = 0; i < 5
| 202-1010 | ||||||||||||||||||
138 | if (cert->pkeys[i].x509 !=
| 63-947 | ||||||||||||||||||
139 | ((void *)0)
| 63-947 | ||||||||||||||||||
140 | ) { | - | ||||||||||||||||||
141 | ret->pkeys[i].x509 = cert->pkeys[i].x509; | - | ||||||||||||||||||
142 | CRYPTO_add_lock(&ret->pkeys[i].x509->references,1,3, | - | ||||||||||||||||||
143 | __FILE__ | - | ||||||||||||||||||
144 | , | - | ||||||||||||||||||
145 | 249 | - | ||||||||||||||||||
146 | ) | - | ||||||||||||||||||
147 | ; | - | ||||||||||||||||||
148 | } executed 63 times by 3 tests: end of block Executed by:
| 63 | ||||||||||||||||||
149 | - | |||||||||||||||||||
150 | if (cert->pkeys[i].privatekey !=
| 63-947 | ||||||||||||||||||
151 | ((void *)0)
| 63-947 | ||||||||||||||||||
152 | ) { | - | ||||||||||||||||||
153 | ret->pkeys[i].privatekey = cert->pkeys[i].privatekey; | - | ||||||||||||||||||
154 | CRYPTO_add_lock(&ret->pkeys[i].privatekey->references,1,10, | - | ||||||||||||||||||
155 | __FILE__ | - | ||||||||||||||||||
156 | , | - | ||||||||||||||||||
157 | 255 | - | ||||||||||||||||||
158 | ) | - | ||||||||||||||||||
159 | ; | - | ||||||||||||||||||
160 | - | |||||||||||||||||||
161 | switch (i) { | - | ||||||||||||||||||
162 | - | |||||||||||||||||||
163 | - | |||||||||||||||||||
164 | - | |||||||||||||||||||
165 | - | |||||||||||||||||||
166 | - | |||||||||||||||||||
167 | - | |||||||||||||||||||
168 | case executed 63 times by 3 tests: 0:case 0: Executed by:
executed 63 times by 3 tests: case 0: Executed by:
| 63 | ||||||||||||||||||
169 | case never executed: 1:case 1: never executed: case 1: | 0 | ||||||||||||||||||
170 | - | |||||||||||||||||||
171 | break; executed 63 times by 3 tests: break; Executed by:
| 63 | ||||||||||||||||||
172 | - | |||||||||||||||||||
173 | case never executed: 2:case 2: never executed: case 2: | 0 | ||||||||||||||||||
174 | - | |||||||||||||||||||
175 | break; never executed: break; | 0 | ||||||||||||||||||
176 | - | |||||||||||||||||||
177 | case never executed: 3:case 3: never executed: case 3: | 0 | ||||||||||||||||||
178 | - | |||||||||||||||||||
179 | break; never executed: break; | 0 | ||||||||||||||||||
180 | - | |||||||||||||||||||
181 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||
182 | - | |||||||||||||||||||
183 | ERR_put_error(20,(0xfff),(274),__FILE__,279); | - | ||||||||||||||||||
184 | } never executed: end of block | 0 | ||||||||||||||||||
185 | } | - | ||||||||||||||||||
186 | } executed 1010 times by 11 tests: end of block Executed by:
| 1010 | ||||||||||||||||||
187 | - | |||||||||||||||||||
188 | - | |||||||||||||||||||
189 | - | |||||||||||||||||||
190 | - | |||||||||||||||||||
191 | - | |||||||||||||||||||
192 | - | |||||||||||||||||||
193 | ret->references = 1; | - | ||||||||||||||||||
194 | - | |||||||||||||||||||
195 | - | |||||||||||||||||||
196 | - | |||||||||||||||||||
197 | - | |||||||||||||||||||
198 | ssl_cert_set_default_md(ret); | - | ||||||||||||||||||
199 | - | |||||||||||||||||||
200 | return executed 202 times by 11 tests: (ret);return (ret); Executed by:
executed 202 times by 11 tests: return (ret); Executed by:
| 202 | ||||||||||||||||||
201 | - | |||||||||||||||||||
202 | err: | - | ||||||||||||||||||
203 | DH_free(ret->dh_tmp); | - | ||||||||||||||||||
204 | EC_KEY_free(ret->ecdh_tmp); | - | ||||||||||||||||||
205 | - | |||||||||||||||||||
206 | for (i = 0; i < 5
| 0 | ||||||||||||||||||
207 | X509_free(ret->pkeys[i].x509); | - | ||||||||||||||||||
208 | EVP_PKEY_free(ret->pkeys[i].privatekey); | - | ||||||||||||||||||
209 | } never executed: end of block | 0 | ||||||||||||||||||
210 | free (ret); | - | ||||||||||||||||||
211 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
212 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
213 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
214 | } | - | ||||||||||||||||||
215 | - | |||||||||||||||||||
216 | - | |||||||||||||||||||
217 | void | - | ||||||||||||||||||
218 | ssl_cert_free(CERT *c) | - | ||||||||||||||||||
219 | { | - | ||||||||||||||||||
220 | int i; | - | ||||||||||||||||||
221 | - | |||||||||||||||||||
222 | if (c ==
| 0-402 | ||||||||||||||||||
223 | ((void *)0)
| 0-402 | ||||||||||||||||||
224 | ) | - | ||||||||||||||||||
225 | return; never executed: return; | 0 | ||||||||||||||||||
226 | - | |||||||||||||||||||
227 | i = CRYPTO_add_lock(&c->references,-1,13,__FILE__,319); | - | ||||||||||||||||||
228 | if (i > 0
| 0-402 | ||||||||||||||||||
229 | return; never executed: return; | 0 | ||||||||||||||||||
230 | - | |||||||||||||||||||
231 | DH_free(c->dh_tmp); | - | ||||||||||||||||||
232 | EC_KEY_free(c->ecdh_tmp); | - | ||||||||||||||||||
233 | - | |||||||||||||||||||
234 | for (i = 0; i < 5
| 402-2010 | ||||||||||||||||||
235 | X509_free(c->pkeys[i].x509); | - | ||||||||||||||||||
236 | EVP_PKEY_free(c->pkeys[i].privatekey); | - | ||||||||||||||||||
237 | } executed 2010 times by 13 tests: end of block Executed by:
| 2010 | ||||||||||||||||||
238 | - | |||||||||||||||||||
239 | free(c); | - | ||||||||||||||||||
240 | } executed 402 times by 13 tests: end of block Executed by:
| 402 | ||||||||||||||||||
241 | - | |||||||||||||||||||
242 | int | - | ||||||||||||||||||
243 | ssl_cert_inst(CERT **o) | - | ||||||||||||||||||
244 | { | - | ||||||||||||||||||
245 | if (o ==
| 0-126 | ||||||||||||||||||
246 | ((void *)0)
| 0-126 | ||||||||||||||||||
247 | ) { | - | ||||||||||||||||||
248 | ERR_put_error(20,(0xfff),((3|64)),__FILE__,349); | - | ||||||||||||||||||
249 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||
250 | } | - | ||||||||||||||||||
251 | if (*
| 0-126 | ||||||||||||||||||
252 | ((void *)0)
| 0-126 | ||||||||||||||||||
253 | ) { | - | ||||||||||||||||||
254 | if ((*
| 0 | ||||||||||||||||||
255 | ((void *)0)
| 0 | ||||||||||||||||||
256 | ) { | - | ||||||||||||||||||
257 | ERR_put_error(20,(0xfff),((1|64)),__FILE__,354); | - | ||||||||||||||||||
258 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||
259 | } | - | ||||||||||||||||||
260 | } never executed: end of block | 0 | ||||||||||||||||||
261 | return executed 126 times by 3 tests: (1);return (1); Executed by:
executed 126 times by 3 tests: return (1); Executed by:
| 126 | ||||||||||||||||||
262 | } | - | ||||||||||||||||||
263 | - | |||||||||||||||||||
264 | - | |||||||||||||||||||
265 | SESS_CERT * | - | ||||||||||||||||||
266 | ssl_sess_cert_new(void) | - | ||||||||||||||||||
267 | { | - | ||||||||||||||||||
268 | SESS_CERT *ret; | - | ||||||||||||||||||
269 | - | |||||||||||||||||||
270 | ret = calloc(1, sizeof *ret); | - | ||||||||||||||||||
271 | if (ret ==
| 0-70 | ||||||||||||||||||
272 | ((void *)0)
| 0-70 | ||||||||||||||||||
273 | ) { | - | ||||||||||||||||||
274 | ERR_put_error(20,(0xfff),((1|64)),__FILE__,369); | - | ||||||||||||||||||
275 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
276 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
277 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
278 | } | - | ||||||||||||||||||
279 | ret->peer_key = &(ret->peer_pkeys[0]); | - | ||||||||||||||||||
280 | ret->references = 1; | - | ||||||||||||||||||
281 | - | |||||||||||||||||||
282 | return executed 70 times by 2 tests: ret;return ret; Executed by:
executed 70 times by 2 tests: return ret; Executed by:
| 70 | ||||||||||||||||||
283 | } | - | ||||||||||||||||||
284 | - | |||||||||||||||||||
285 | void | - | ||||||||||||||||||
286 | ssl_sess_cert_free(SESS_CERT *sc) | - | ||||||||||||||||||
287 | { | - | ||||||||||||||||||
288 | int i; | - | ||||||||||||||||||
289 | - | |||||||||||||||||||
290 | if (sc ==
| 70-140 | ||||||||||||||||||
291 | ((void *)0)
| 70-140 | ||||||||||||||||||
292 | ) | - | ||||||||||||||||||
293 | return; executed 140 times by 5 tests: return; Executed by:
| 140 | ||||||||||||||||||
294 | - | |||||||||||||||||||
295 | i = CRYPTO_add_lock(&sc->references,-1,15,__FILE__,386); | - | ||||||||||||||||||
296 | if (i > 0
| 0-70 | ||||||||||||||||||
297 | return; never executed: return; | 0 | ||||||||||||||||||
298 | - | |||||||||||||||||||
299 | sk_pop_free(((_STACK*) (1 ? (sc->cert_chain) : (struct stack_st_X509*)0)), ((void (*)(void *)) ((1 ? (X509_free) : (void (*)(X509 *))0)))); | - | ||||||||||||||||||
300 | for (i = 0; i < 5
| 70-350 | ||||||||||||||||||
301 | X509_free(sc->peer_pkeys[i].x509); executed 350 times by 2 tests: X509_free(sc->peer_pkeys[i].x509); Executed by:
| 350 | ||||||||||||||||||
302 | - | |||||||||||||||||||
303 | DH_free(sc->peer_dh_tmp); | - | ||||||||||||||||||
304 | EC_KEY_free(sc->peer_ecdh_tmp); | - | ||||||||||||||||||
305 | free(sc->peer_x25519_tmp); | - | ||||||||||||||||||
306 | - | |||||||||||||||||||
307 | free(sc); | - | ||||||||||||||||||
308 | } executed 70 times by 2 tests: end of block Executed by:
| 70 | ||||||||||||||||||
309 | - | |||||||||||||||||||
310 | int | - | ||||||||||||||||||
311 | ssl_verify_cert_chain(SSL *s, struct stack_st_X509 *sk) | - | ||||||||||||||||||
312 | { | - | ||||||||||||||||||
313 | X509_STORE_CTX ctx; | - | ||||||||||||||||||
314 | X509 *x; | - | ||||||||||||||||||
315 | int ret; | - | ||||||||||||||||||
316 | - | |||||||||||||||||||
317 | if ((
| 0-60 | ||||||||||||||||||
318 | ((void *)0)
| 0-60 | ||||||||||||||||||
319 | )
| 0-60 | ||||||||||||||||||
320 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||
321 | - | |||||||||||||||||||
322 | x = ((X509 *)sk_value(((_STACK*) (1 ? (sk) : (struct stack_st_X509*)0)), (0))); | - | ||||||||||||||||||
323 | if (!X509_STORE_CTX_init(&ctx, s->ctx->cert_store, x, sk)
| 0-60 | ||||||||||||||||||
324 | SSL_error_internal(s, 11, __FILE__, 413); | - | ||||||||||||||||||
325 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||
326 | } | - | ||||||||||||||||||
327 | X509_STORE_CTX_set_ex_data(&ctx, | - | ||||||||||||||||||
328 | SSL_get_ex_data_X509_STORE_CTX_idx(), s); | - | ||||||||||||||||||
329 | - | |||||||||||||||||||
330 | - | |||||||||||||||||||
331 | - | |||||||||||||||||||
332 | - | |||||||||||||||||||
333 | - | |||||||||||||||||||
334 | - | |||||||||||||||||||
335 | X509_STORE_CTX_set_default(&ctx, | - | ||||||||||||||||||
336 | s->server ? "ssl_client" : "ssl_server"); | - | ||||||||||||||||||
337 | - | |||||||||||||||||||
338 | - | |||||||||||||||||||
339 | - | |||||||||||||||||||
340 | - | |||||||||||||||||||
341 | - | |||||||||||||||||||
342 | X509_VERIFY_PARAM_set1(X509_STORE_CTX_get0_param(&ctx), s->param); | - | ||||||||||||||||||
343 | - | |||||||||||||||||||
344 | if (s->internal->verify_callback
| 14-46 | ||||||||||||||||||
345 | X509_STORE_CTX_set_verify_cb(&ctx, s->internal->verify_callback); executed 14 times by 1 test: X509_STORE_CTX_set_verify_cb(&ctx, s->internal->verify_callback); Executed by:
| 14 | ||||||||||||||||||
346 | - | |||||||||||||||||||
347 | if (s->ctx->internal->app_verify_callback !=
| 18-42 | ||||||||||||||||||
348 | ((void *)0)
| 18-42 | ||||||||||||||||||
349 | ) | - | ||||||||||||||||||
350 | ret = s->ctx->internal->app_verify_callback(&ctx, executed 18 times by 2 tests: ret = s->ctx->internal->app_verify_callback(&ctx, s->ctx->internal->app_verify_arg); Executed by:
| 18 | ||||||||||||||||||
351 | s->ctx->internal->app_verify_arg); executed 18 times by 2 tests: ret = s->ctx->internal->app_verify_callback(&ctx, s->ctx->internal->app_verify_arg); Executed by:
| 18 | ||||||||||||||||||
352 | else | - | ||||||||||||||||||
353 | ret = X509_verify_cert(&ctx); executed 42 times by 1 test: ret = X509_verify_cert(&ctx); Executed by:
| 42 | ||||||||||||||||||
354 | - | |||||||||||||||||||
355 | s->verify_result = ctx.error; | - | ||||||||||||||||||
356 | X509_STORE_CTX_cleanup(&ctx); | - | ||||||||||||||||||
357 | - | |||||||||||||||||||
358 | return executed 60 times by 2 tests: (ret);return (ret); Executed by:
executed 60 times by 2 tests: return (ret); Executed by:
| 60 | ||||||||||||||||||
359 | } | - | ||||||||||||||||||
360 | - | |||||||||||||||||||
361 | static void | - | ||||||||||||||||||
362 | set_client_CA_list(struct stack_st_X509_NAME **ca_list, | - | ||||||||||||||||||
363 | struct stack_st_X509_NAME *name_list) | - | ||||||||||||||||||
364 | { | - | ||||||||||||||||||
365 | sk_pop_free(((_STACK*) (1 ? (*ca_list) : (struct stack_st_X509_NAME*)0)), ((void (*)(void *)) ((1 ? (X509_NAME_free) : (void (*)(X509_NAME *))0)))); | - | ||||||||||||||||||
366 | *ca_list = name_list; | - | ||||||||||||||||||
367 | } never executed: end of block | 0 | ||||||||||||||||||
368 | - | |||||||||||||||||||
369 | struct stack_st_X509_NAME * | - | ||||||||||||||||||
370 | SSL_dup_CA_list(const struct stack_st_X509_NAME *sk) | - | ||||||||||||||||||
371 | { | - | ||||||||||||||||||
372 | int i; | - | ||||||||||||||||||
373 | struct stack_st_X509_NAME *ret; | - | ||||||||||||||||||
374 | X509_NAME *name; | - | ||||||||||||||||||
375 | - | |||||||||||||||||||
376 | ret = ((struct stack_st_X509_NAME *)sk_new_null()); | - | ||||||||||||||||||
377 | for (i = 0; i < sk_num(((_STACK*) (1 ? (sk) : (struct stack_st_X509_NAME*)0)))
| 0 | ||||||||||||||||||
378 | name = X509_NAME_dup(((X509_NAME *)sk_value(((_STACK*) (1 ? (sk) : (struct stack_st_X509_NAME*)0)), (i)))); | - | ||||||||||||||||||
379 | if ((
| 0 | ||||||||||||||||||
380 | ((void *)0)
| 0 | ||||||||||||||||||
381 | )
| 0 | ||||||||||||||||||
382 | sk_pop_free(((_STACK*) (1 ? (ret) : (struct stack_st_X509_NAME*)0)), ((void (*)(void *)) ((1 ? (X509_NAME_free) : (void (*)(X509_NAME *))0)))); | - | ||||||||||||||||||
383 | return never executed: (return ( ((void *)0) ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
384 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
385 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
386 | } | - | ||||||||||||||||||
387 | } never executed: end of block | 0 | ||||||||||||||||||
388 | return never executed: (ret);return (ret); never executed: return (ret); | 0 | ||||||||||||||||||
389 | } | - | ||||||||||||||||||
390 | - | |||||||||||||||||||
391 | void | - | ||||||||||||||||||
392 | SSL_set_client_CA_list(SSL *s, struct stack_st_X509_NAME *name_list) | - | ||||||||||||||||||
393 | { | - | ||||||||||||||||||
394 | set_client_CA_list(&(s->internal->client_CA), name_list); | - | ||||||||||||||||||
395 | } never executed: end of block | 0 | ||||||||||||||||||
396 | - | |||||||||||||||||||
397 | void | - | ||||||||||||||||||
398 | SSL_CTX_set_client_CA_list(SSL_CTX *ctx, struct stack_st_X509_NAME *name_list) | - | ||||||||||||||||||
399 | { | - | ||||||||||||||||||
400 | set_client_CA_list(&(ctx->internal->client_CA), name_list); | - | ||||||||||||||||||
401 | } never executed: end of block | 0 | ||||||||||||||||||
402 | - | |||||||||||||||||||
403 | struct stack_st_X509_NAME * | - | ||||||||||||||||||
404 | SSL_CTX_get_client_CA_list(const SSL_CTX *ctx) | - | ||||||||||||||||||
405 | { | - | ||||||||||||||||||
406 | return never executed: (ctx->internal->client_CA);return (ctx->internal->client_CA); never executed: return (ctx->internal->client_CA); | 0 | ||||||||||||||||||
407 | } | - | ||||||||||||||||||
408 | - | |||||||||||||||||||
409 | struct stack_st_X509_NAME * | - | ||||||||||||||||||
410 | SSL_get_client_CA_list(const SSL *s) | - | ||||||||||||||||||
411 | { | - | ||||||||||||||||||
412 | if (s->internal->type == 0x1000
| 0-7 | ||||||||||||||||||
413 | - | |||||||||||||||||||
414 | if (((
| 0 | ||||||||||||||||||
415 | (
| 0 | ||||||||||||||||||
416 | ((void *)0)
| 0 | ||||||||||||||||||
417 | )
| 0 | ||||||||||||||||||
418 | return never executed: ((s->s3->internal)->tmp.ca_names);return ((s->s3->internal)->tmp.ca_names); never executed: return ((s->s3->internal)->tmp.ca_names); | 0 | ||||||||||||||||||
419 | else | - | ||||||||||||||||||
420 | return never executed: (return ( ((void *)0) ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
421 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
422 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
423 | } else { | - | ||||||||||||||||||
424 | if (s->internal->client_CA !=
| 0-7 | ||||||||||||||||||
425 | ((void *)0)
| 0-7 | ||||||||||||||||||
426 | ) | - | ||||||||||||||||||
427 | return never executed: (s->internal->client_CA);return (s->internal->client_CA); never executed: return (s->internal->client_CA); | 0 | ||||||||||||||||||
428 | else | - | ||||||||||||||||||
429 | return executed 7 times by 1 test: (s->ctx->internal->client_CA);return (s->ctx->internal->client_CA); Executed by:
executed 7 times by 1 test: return (s->ctx->internal->client_CA); Executed by:
| 7 | ||||||||||||||||||
430 | } | - | ||||||||||||||||||
431 | } | - | ||||||||||||||||||
432 | - | |||||||||||||||||||
433 | static int | - | ||||||||||||||||||
434 | add_client_CA(struct stack_st_X509_NAME **sk, X509 *x) | - | ||||||||||||||||||
435 | { | - | ||||||||||||||||||
436 | X509_NAME *name; | - | ||||||||||||||||||
437 | - | |||||||||||||||||||
438 | if (x ==
| 0 | ||||||||||||||||||
439 | ((void *)0)
| 0 | ||||||||||||||||||
440 | ) | - | ||||||||||||||||||
441 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||
442 | if ((*
| 0 | ||||||||||||||||||
443 | ((void *)0)
| 0 | ||||||||||||||||||
444 | )
| 0 | ||||||||||||||||||
445 | ((void *)0)
| 0 | ||||||||||||||||||
446 | )
| 0 | ||||||||||||||||||
447 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||
448 | - | |||||||||||||||||||
449 | if ((
| 0 | ||||||||||||||||||
450 | ((void *)0)
| 0 | ||||||||||||||||||
451 | ) | - | ||||||||||||||||||
452 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||
453 | - | |||||||||||||||||||
454 | if (!sk_push(((_STACK*) (1 ? (*sk) : (struct stack_st_X509_NAME*)0)), ((void*) (1 ? (name) : (X509_NAME*)0)))
| 0 | ||||||||||||||||||
455 | X509_NAME_free(name); | - | ||||||||||||||||||
456 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||
457 | } | - | ||||||||||||||||||
458 | return never executed: (1);return (1); never executed: return (1); | 0 | ||||||||||||||||||
459 | } | - | ||||||||||||||||||
460 | - | |||||||||||||||||||
461 | int | - | ||||||||||||||||||
462 | SSL_add_client_CA(SSL *ssl, X509 *x) | - | ||||||||||||||||||
463 | { | - | ||||||||||||||||||
464 | return never executed: (add_client_CA(&(ssl->internal->client_CA), x));return (add_client_CA(&(ssl->internal->client_CA), x)); never executed: return (add_client_CA(&(ssl->internal->client_CA), x)); | 0 | ||||||||||||||||||
465 | } | - | ||||||||||||||||||
466 | - | |||||||||||||||||||
467 | int | - | ||||||||||||||||||
468 | SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x) | - | ||||||||||||||||||
469 | { | - | ||||||||||||||||||
470 | return never executed: (add_client_CA(&(ctx->internal->client_CA), x));return (add_client_CA(&(ctx->internal->client_CA), x)); never executed: return (add_client_CA(&(ctx->internal->client_CA), x)); | 0 | ||||||||||||||||||
471 | } | - | ||||||||||||||||||
472 | - | |||||||||||||||||||
473 | static int | - | ||||||||||||||||||
474 | xname_cmp(const X509_NAME * const *a, const X509_NAME * const *b) | - | ||||||||||||||||||
475 | { | - | ||||||||||||||||||
476 | return never executed: (X509_NAME_cmp(*a, *b));return (X509_NAME_cmp(*a, *b)); never executed: return (X509_NAME_cmp(*a, *b)); | 0 | ||||||||||||||||||
477 | } | - | ||||||||||||||||||
478 | struct stack_st_X509_NAME * | - | ||||||||||||||||||
479 | SSL_load_client_CA_file(const char *file) | - | ||||||||||||||||||
480 | { | - | ||||||||||||||||||
481 | BIO *in; | - | ||||||||||||||||||
482 | X509 *x = | - | ||||||||||||||||||
483 | ((void *)0) | - | ||||||||||||||||||
484 | ; | - | ||||||||||||||||||
485 | X509_NAME *xn = | - | ||||||||||||||||||
486 | ((void *)0) | - | ||||||||||||||||||
487 | ; | - | ||||||||||||||||||
488 | struct stack_st_X509_NAME *ret = | - | ||||||||||||||||||
489 | ((void *)0) | - | ||||||||||||||||||
490 | , *sk; | - | ||||||||||||||||||
491 | - | |||||||||||||||||||
492 | sk = ((struct stack_st_X509_NAME *)sk_new(((int (*)(const void *, const void *)) ((1 ? (xname_cmp) : (int (*)(const X509_NAME * const *, const X509_NAME * const *))0))))); | - | ||||||||||||||||||
493 | - | |||||||||||||||||||
494 | in = BIO_new(BIO_s_file()); | - | ||||||||||||||||||
495 | - | |||||||||||||||||||
496 | if ((
| 0 | ||||||||||||||||||
497 | ((void *)0)
| 0 | ||||||||||||||||||
498 | )
| 0 | ||||||||||||||||||
499 | ((void *)0)
| 0 | ||||||||||||||||||
500 | )
| 0 | ||||||||||||||||||
501 | ERR_put_error(20,(0xfff),((1|64)),__FILE__,569); | - | ||||||||||||||||||
502 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
503 | } | - | ||||||||||||||||||
504 | - | |||||||||||||||||||
505 | if (!BIO_ctrl(in,108, 0x01|0x02,(char *)file)
| 0 | ||||||||||||||||||
506 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
507 | - | |||||||||||||||||||
508 | for (;;) { | - | ||||||||||||||||||
509 | if (PEM_read_bio_X509(in, &x,
| 0 | ||||||||||||||||||
510 | ((void *)0)
| 0 | ||||||||||||||||||
511 | ,
| 0 | ||||||||||||||||||
512 | ((void *)0)
| 0 | ||||||||||||||||||
513 | ) ==
| 0 | ||||||||||||||||||
514 | ((void *)0)
| 0 | ||||||||||||||||||
515 | ) | - | ||||||||||||||||||
516 | break; never executed: break; | 0 | ||||||||||||||||||
517 | if (ret ==
| 0 | ||||||||||||||||||
518 | ((void *)0)
| 0 | ||||||||||||||||||
519 | ) { | - | ||||||||||||||||||
520 | ret = ((struct stack_st_X509_NAME *)sk_new_null()); | - | ||||||||||||||||||
521 | if (ret ==
| 0 | ||||||||||||||||||
522 | ((void *)0)
| 0 | ||||||||||||||||||
523 | ) { | - | ||||||||||||||||||
524 | ERR_put_error(20,(0xfff),((1|64)),__FILE__,582); | - | ||||||||||||||||||
525 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
526 | } | - | ||||||||||||||||||
527 | } never executed: end of block | 0 | ||||||||||||||||||
528 | if ((
| 0 | ||||||||||||||||||
529 | ((void *)0)
| 0 | ||||||||||||||||||
530 | ) goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
531 | - | |||||||||||||||||||
532 | xn = X509_NAME_dup(xn); | - | ||||||||||||||||||
533 | if (xn ==
| 0 | ||||||||||||||||||
534 | ((void *)0)
| 0 | ||||||||||||||||||
535 | ) | - | ||||||||||||||||||
536 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
537 | if (sk_find(((_STACK*) (1 ? (sk) : (struct stack_st_X509_NAME*)0)), ((void*) (1 ? (xn) : (X509_NAME*)0))) >= 0
| 0 | ||||||||||||||||||
538 | X509_NAME_free(xn); never executed: X509_NAME_free(xn); | 0 | ||||||||||||||||||
539 | else { | - | ||||||||||||||||||
540 | sk_push(((_STACK*) (1 ? (sk) : (struct stack_st_X509_NAME*)0)), ((void*) (1 ? (xn) : (X509_NAME*)0))); | - | ||||||||||||||||||
541 | sk_push(((_STACK*) (1 ? (ret) : (struct stack_st_X509_NAME*)0)), ((void*) (1 ? (xn) : (X509_NAME*)0))); | - | ||||||||||||||||||
542 | } never executed: end of block | 0 | ||||||||||||||||||
543 | } | - | ||||||||||||||||||
544 | - | |||||||||||||||||||
545 | if (0) { | - | ||||||||||||||||||
546 | err: | - | ||||||||||||||||||
547 | sk_pop_free(((_STACK*) (1 ? (ret) : (struct stack_st_X509_NAME*)0)), ((void (*)(void *)) ((1 ? (X509_NAME_free) : (void (*)(X509_NAME *))0)))); | - | ||||||||||||||||||
548 | ret = | - | ||||||||||||||||||
549 | ((void *)0) | - | ||||||||||||||||||
550 | ; | - | ||||||||||||||||||
551 | } never executed: end of block | 0 | ||||||||||||||||||
552 | sk_free(((_STACK*) (1 ? (sk) : (struct stack_st_X509_NAME*)0))); | - | ||||||||||||||||||
553 | BIO_free(in); | - | ||||||||||||||||||
554 | X509_free(x); | - | ||||||||||||||||||
555 | if (ret !=
| 0 | ||||||||||||||||||
556 | ((void *)0)
| 0 | ||||||||||||||||||
557 | ) | - | ||||||||||||||||||
558 | ERR_clear_error(); never executed: ERR_clear_error(); | 0 | ||||||||||||||||||
559 | - | |||||||||||||||||||
560 | return never executed: (ret);return (ret); never executed: return (ret); | 0 | ||||||||||||||||||
561 | } | - | ||||||||||||||||||
562 | int | - | ||||||||||||||||||
563 | SSL_add_file_cert_subjects_to_stack(struct stack_st_X509_NAME *stack, | - | ||||||||||||||||||
564 | const char *file) | - | ||||||||||||||||||
565 | { | - | ||||||||||||||||||
566 | BIO *in; | - | ||||||||||||||||||
567 | X509 *x = | - | ||||||||||||||||||
568 | ((void *)0) | - | ||||||||||||||||||
569 | ; | - | ||||||||||||||||||
570 | X509_NAME *xn = | - | ||||||||||||||||||
571 | ((void *)0) | - | ||||||||||||||||||
572 | ; | - | ||||||||||||||||||
573 | int ret = 1; | - | ||||||||||||||||||
574 | int (*oldcmp)(const X509_NAME * const *a, const X509_NAME * const *b); | - | ||||||||||||||||||
575 | - | |||||||||||||||||||
576 | oldcmp = ((int (*)(const X509_NAME * const *,const X509_NAME * const *)) sk_set_cmp_func(((_STACK*) (1 ? (stack) : (struct stack_st_X509_NAME*)0)), ((int (*)(const void *, const void *)) ((1 ? (xname_cmp) : (int (*)(const X509_NAME * const *, const X509_NAME * const *))0))))); | - | ||||||||||||||||||
577 | - | |||||||||||||||||||
578 | in = BIO_new(BIO_s_file()); | - | ||||||||||||||||||
579 | - | |||||||||||||||||||
580 | if (in ==
| 0 | ||||||||||||||||||
581 | ((void *)0)
| 0 | ||||||||||||||||||
582 | ) { | - | ||||||||||||||||||
583 | ERR_put_error(20,(0xfff),((1|64)),__FILE__,637); | - | ||||||||||||||||||
584 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
585 | } | - | ||||||||||||||||||
586 | - | |||||||||||||||||||
587 | if (!BIO_ctrl(in,108, 0x01|0x02,(char *)file)
| 0 | ||||||||||||||||||
588 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
589 | - | |||||||||||||||||||
590 | for (;;) { | - | ||||||||||||||||||
591 | if (PEM_read_bio_X509(in, &x,
| 0 | ||||||||||||||||||
592 | ((void *)0)
| 0 | ||||||||||||||||||
593 | ,
| 0 | ||||||||||||||||||
594 | ((void *)0)
| 0 | ||||||||||||||||||
595 | ) ==
| 0 | ||||||||||||||||||
596 | ((void *)0)
| 0 | ||||||||||||||||||
597 | ) | - | ||||||||||||||||||
598 | break; never executed: break; | 0 | ||||||||||||||||||
599 | if ((
| 0 | ||||||||||||||||||
600 | ((void *)0)
| 0 | ||||||||||||||||||
601 | ) goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
602 | xn = X509_NAME_dup(xn); | - | ||||||||||||||||||
603 | if (xn ==
| 0 | ||||||||||||||||||
604 | ((void *)0)
| 0 | ||||||||||||||||||
605 | ) | - | ||||||||||||||||||
606 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
607 | if (sk_find(((_STACK*) (1 ? (stack) : (struct stack_st_X509_NAME*)0)), ((void*) (1 ? (xn) : (X509_NAME*)0))) >= 0
| 0 | ||||||||||||||||||
608 | X509_NAME_free(xn); never executed: X509_NAME_free(xn); | 0 | ||||||||||||||||||
609 | else | - | ||||||||||||||||||
610 | sk_push(((_STACK*) (1 ? (stack) : (struct stack_st_X509_NAME*)0)), ((void*) (1 ? (xn) : (X509_NAME*)0))); never executed: sk_push(((_STACK*) (1 ? (stack) : (struct stack_st_X509_NAME*)0)), ((void*) (1 ? (xn) : (X509_NAME*)0))); | 0 | ||||||||||||||||||
611 | } | - | ||||||||||||||||||
612 | - | |||||||||||||||||||
613 | ERR_clear_error(); | - | ||||||||||||||||||
614 | - | |||||||||||||||||||
615 | if (0) { | - | ||||||||||||||||||
616 | err: | - | ||||||||||||||||||
617 | ret = 0; | - | ||||||||||||||||||
618 | } never executed: end of block | 0 | ||||||||||||||||||
619 | BIO_free(in); | - | ||||||||||||||||||
620 | X509_free(x); | - | ||||||||||||||||||
621 | - | |||||||||||||||||||
622 | (void)((int (*)(const X509_NAME * const *,const X509_NAME * const *)) sk_set_cmp_func(((_STACK*) (1 ? (stack) : (struct stack_st_X509_NAME*)0)), ((int (*)(const void *, const void *)) ((1 ? (oldcmp) : (int (*)(const X509_NAME * const *, const X509_NAME * const *))0))))); | - | ||||||||||||||||||
623 | - | |||||||||||||||||||
624 | return never executed: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||
625 | } | - | ||||||||||||||||||
626 | int | - | ||||||||||||||||||
627 | SSL_add_dir_cert_subjects_to_stack(struct stack_st_X509_NAME *stack, const char *dir) | - | ||||||||||||||||||
628 | { | - | ||||||||||||||||||
629 | DIR *dirp = | - | ||||||||||||||||||
630 | ((void *)0) | - | ||||||||||||||||||
631 | ; | - | ||||||||||||||||||
632 | char *path = | - | ||||||||||||||||||
633 | ((void *)0) | - | ||||||||||||||||||
634 | ; | - | ||||||||||||||||||
635 | int ret = 0; | - | ||||||||||||||||||
636 | - | |||||||||||||||||||
637 | dirp = opendir(dir); | - | ||||||||||||||||||
638 | if (dirp
| 0 | ||||||||||||||||||
639 | struct dirent *dp; | - | ||||||||||||||||||
640 | while ((
| 0 | ||||||||||||||||||
641 | ((void *)0)
| 0 | ||||||||||||||||||
642 | ) { | - | ||||||||||||||||||
643 | if (asprintf(&path, "%s/%s", dir, dp->d_name) != -1
| 0 | ||||||||||||||||||
644 | ret = SSL_add_file_cert_subjects_to_stack( | - | ||||||||||||||||||
645 | stack, path); | - | ||||||||||||||||||
646 | free(path); | - | ||||||||||||||||||
647 | } never executed: end of block | 0 | ||||||||||||||||||
648 | if (!ret
| 0 | ||||||||||||||||||
649 | break; never executed: break; | 0 | ||||||||||||||||||
650 | } never executed: end of block | 0 | ||||||||||||||||||
651 | (void) closedir(dirp); | - | ||||||||||||||||||
652 | } never executed: end of block | 0 | ||||||||||||||||||
653 | if (!ret
| 0 | ||||||||||||||||||
654 | ERR_put_error(2,(0xfff),( | - | ||||||||||||||||||
655 | (*__errno_location ()) | - | ||||||||||||||||||
656 | ),__FILE__,704); | - | ||||||||||||||||||
657 | ERR_asprintf_error_data("opendir ('%s')", dir); | - | ||||||||||||||||||
658 | ERR_put_error(20,(0xfff),(2),__FILE__,706); | - | ||||||||||||||||||
659 | } never executed: end of block | 0 | ||||||||||||||||||
660 | return never executed: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||
661 | } | - | ||||||||||||||||||
Switch to Source code | Preprocessed file |