OpenCoverage

v3_crld.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/x509v3/v3_crld.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: v3_crld.c,v 1.22 2017/05/02 04:11:08 deraadt Exp $ */-
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL-
3 * project 1999.-
4 */-
5/* ====================================================================-
6 * Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved.-
7 *-
8 * Redistribution and use in source and binary forms, with or without-
9 * modification, are permitted provided that the following conditions-
10 * are met:-
11 *-
12 * 1. Redistributions of source code must retain the above copyright-
13 * notice, this list of conditions and the following disclaimer.-
14 *-
15 * 2. Redistributions in binary form must reproduce the above copyright-
16 * notice, this list of conditions and the following disclaimer in-
17 * the documentation and/or other materials provided with the-
18 * distribution.-
19 *-
20 * 3. All advertising materials mentioning features or use of this-
21 * software must display the following acknowledgment:-
22 * "This product includes software developed by the OpenSSL Project-
23 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"-
24 *-
25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to-
26 * endorse or promote products derived from this software without-
27 * prior written permission. For written permission, please contact-
28 * licensing@OpenSSL.org.-
29 *-
30 * 5. Products derived from this software may not be called "OpenSSL"-
31 * nor may "OpenSSL" appear in their names without prior written-
32 * permission of the OpenSSL Project.-
33 *-
34 * 6. Redistributions of any form whatsoever must retain the following-
35 * acknowledgment:-
36 * "This product includes software developed by the OpenSSL Project-
37 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"-
38 *-
39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY-
40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR-
42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR-
43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,-
44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT-
45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;-
46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,-
48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)-
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED-
50 * OF THE POSSIBILITY OF SUCH DAMAGE.-
51 * ====================================================================-
52 *-
53 * This product includes cryptographic software written by Eric Young-
54 * (eay@cryptsoft.com). This product includes software written by Tim-
55 * Hudson (tjh@cryptsoft.com).-
56 *-
57 */-
58-
59#include <stdio.h>-
60#include <string.h>-
61-
62#include <openssl/asn1.h>-
63#include <openssl/asn1t.h>-
64#include <openssl/conf.h>-
65#include <openssl/err.h>-
66#include <openssl/x509v3.h>-
67-
68static void *v2i_crld(const X509V3_EXT_METHOD *method,-
69 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);-
70static int i2r_crldp(const X509V3_EXT_METHOD *method, void *pcrldp, BIO *out,-
71 int indent);-
72-
73const X509V3_EXT_METHOD v3_crld = {-
74 .ext_nid = NID_crl_distribution_points,-
75 .ext_flags = 0,-
76 .it = &CRL_DIST_POINTS_it,-
77 .ext_new = NULL,-
78 .ext_free = NULL,-
79 .d2i = NULL,-
80 .i2d = NULL,-
81 .i2s = NULL,-
82 .s2i = NULL,-
83 .i2v = NULL,-
84 .v2i = v2i_crld,-
85 .i2r = i2r_crldp,-
86 .r2i = NULL,-
87 .usr_data = NULL,-
88};-
89-
90const X509V3_EXT_METHOD v3_freshest_crl = {-
91 .ext_nid = NID_freshest_crl,-
92 .ext_flags = 0,-
93 .it = &CRL_DIST_POINTS_it,-
94 .ext_new = NULL,-
95 .ext_free = NULL,-
96 .d2i = NULL,-
97 .i2d = NULL,-
98 .i2s = NULL,-
99 .s2i = NULL,-
100 .i2v = NULL,-
101 .v2i = v2i_crld,-
102 .i2r = i2r_crldp,-
103 .r2i = NULL,-
104 .usr_data = NULL,-
105};-
106-
107static-
108STACK_OF(GENERAL_NAME) *gnames_from_sectname(X509V3_CTX *ctx, char *sect)-
109{-
110 STACK_OF(CONF_VALUE) *gnsect;-
111 STACK_OF(GENERAL_NAME) *gens;-
112-
113 if (*sect == '@')
*sect == '@'Description
TRUEnever evaluated
FALSEnever evaluated
0
114 gnsect = X509V3_get_section(ctx, sect + 1);
never executed: gnsect = X509V3_get_section(ctx, sect + 1);
0
115 else-
116 gnsect = X509V3_parse_list(sect);
never executed: gnsect = X509V3_parse_list(sect);
0
117 if (!gnsect) {
!gnsectDescription
TRUEnever evaluated
FALSEnever evaluated
0
118 X509V3error(X509V3_R_SECTION_NOT_FOUND);-
119 return NULL;
never executed: return ((void *)0) ;
0
120 }-
121 gens = v2i_GENERAL_NAMES(NULL, ctx, gnsect);-
122 if (*sect == '@')
*sect == '@'Description
TRUEnever evaluated
FALSEnever evaluated
0
123 X509V3_section_free(ctx, gnsect);
never executed: X509V3_section_free(ctx, gnsect);
0
124 else-
125 sk_CONF_VALUE_pop_free(gnsect, X509V3_conf_free);
never executed: sk_pop_free(((_STACK*) (1 ? (gnsect) : (struct stack_st_CONF_VALUE*)0)), ((void (*)(void *)) ((1 ? (X509V3_conf_free) : (void (*)(CONF_VALUE *))0))));
0
126 return gens;
never executed: return gens;
0
127}-
128-
129static int-
130set_dist_point_name(DIST_POINT_NAME **pdp, X509V3_CTX *ctx, CONF_VALUE *cnf)-
131{-
132 STACK_OF(GENERAL_NAME) *fnm = NULL;-
133 STACK_OF(X509_NAME_ENTRY) *rnm = NULL;-
134-
135 if (!strncmp(cnf->name, "fullname", 9)) {
never executed: __result = (((const unsigned char *) (const char *) ( cnf->name ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "fullname" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! (__extension...lname" , 9 )))Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_constant_p ( 9 )Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons... ( cnf->name )Description
TRUEnever evaluated
FALSEnever evaluated
strlen ( cnf->...size_t) ( 9 ))Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...( "fullname" )Description
TRUEnever evaluated
FALSEnever evaluated
strlen ( "full...size_t) ( 9 ))Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
136 fnm = gnames_from_sectname(ctx, cnf->value);-
137 if (!fnm)
!fnmDescription
TRUEnever evaluated
FALSEnever evaluated
0
138 goto err;
never executed: goto err;
0
139 } else if (!strcmp(cnf->name, "relativename")) {
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( cnf->name ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "relativename" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! __extension_...name" )))); })Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
140 int ret;-
141 STACK_OF(CONF_VALUE) *dnsect;-
142 X509_NAME *nm;-
143 nm = X509_NAME_new();-
144 if (!nm)
!nmDescription
TRUEnever evaluated
FALSEnever evaluated
0
145 return -1;
never executed: return -1;
0
146 dnsect = X509V3_get_section(ctx, cnf->value);-
147 if (!dnsect) {
!dnsectDescription
TRUEnever evaluated
FALSEnever evaluated
0
148 X509V3error(X509V3_R_SECTION_NOT_FOUND);-
149 X509_NAME_free(nm);-
150 return -1;
never executed: return -1;
0
151 }-
152 ret = X509V3_NAME_from_section(nm, dnsect, MBSTRING_ASC);-
153 X509V3_section_free(ctx, dnsect);-
154 rnm = nm->entries;-
155 nm->entries = NULL;-
156 X509_NAME_free(nm);-
157 if (!ret || sk_X509_NAME_ENTRY_num(rnm) <= 0)
!retDescription
TRUEnever evaluated
FALSEnever evaluated
sk_num(((_STAC...TRY*)0))) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
158 goto err;
never executed: goto err;
0
159 /* Since its a name fragment can't have more than one-
160 * RDNSequence-
161 */-
162 if (sk_X509_NAME_ENTRY_value(rnm,
((X509_NAME_EN...) - 1))) ->setDescription
TRUEnever evaluated
FALSEnever evaluated
0
163 sk_X509_NAME_ENTRY_num(rnm) - 1)->set) {
((X509_NAME_EN...) - 1))) ->setDescription
TRUEnever evaluated
FALSEnever evaluated
0
164 X509V3error(X509V3_R_INVALID_MULTIPLE_RDNS);-
165 goto err;
never executed: goto err;
0
166 }-
167 } else
never executed: end of block
0
168 return 0;
never executed: return 0;
0
169-
170 if (*pdp) {
*pdpDescription
TRUEnever evaluated
FALSEnever evaluated
0
171 X509V3error(X509V3_R_DISTPOINT_ALREADY_SET);-
172 goto err;
never executed: goto err;
0
173 }-
174-
175 *pdp = DIST_POINT_NAME_new();-
176 if (!*pdp)
!*pdpDescription
TRUEnever evaluated
FALSEnever evaluated
0
177 goto err;
never executed: goto err;
0
178 if (fnm) {
fnmDescription
TRUEnever evaluated
FALSEnever evaluated
0
179 (*pdp)->type = 0;-
180 (*pdp)->name.fullname = fnm;-
181 } else {
never executed: end of block
0
182 (*pdp)->type = 1;-
183 (*pdp)->name.relativename = rnm;-
184 }
never executed: end of block
0
185-
186 return 1;
never executed: return 1;
0
187-
188err:-
189 sk_GENERAL_NAME_pop_free(fnm, GENERAL_NAME_free);-
190 sk_X509_NAME_ENTRY_pop_free(rnm, X509_NAME_ENTRY_free);-
191 return -1;
never executed: return -1;
0
192}-
193-
194static const BIT_STRING_BITNAME reason_flags[] = {-
195 {0, "Unused", "unused"},-
196 {1, "Key Compromise", "keyCompromise"},-
197 {2, "CA Compromise", "CACompromise"},-
198 {3, "Affiliation Changed", "affiliationChanged"},-
199 {4, "Superseded", "superseded"},-
200 {5, "Cessation Of Operation", "cessationOfOperation"},-
201 {6, "Certificate Hold", "certificateHold"},-
202 {7, "Privilege Withdrawn", "privilegeWithdrawn"},-
203 {8, "AA Compromise", "AACompromise"},-
204 {-1, NULL, NULL}-
205};-
206-
207static int-
208set_reasons(ASN1_BIT_STRING **preas, char *value)-
209{-
210 STACK_OF(CONF_VALUE) *rsk = NULL;-
211 const BIT_STRING_BITNAME *pbn;-
212 const char *bnam;-
213 int i, ret = 0;-
214-
215 if (*preas != NULL)
*preas != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
216 return 0;
never executed: return 0;
0
217 rsk = X509V3_parse_list(value);-
218 if (rsk == NULL)
rsk == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
219 return 0;
never executed: return 0;
0
220 for (i = 0; i < sk_CONF_VALUE_num(rsk); i++) {
i < sk_num(((_...NF_VALUE*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
221 bnam = sk_CONF_VALUE_value(rsk, i)->name;-
222 if (!*preas) {
!*preasDescription
TRUEnever evaluated
FALSEnever evaluated
0
223 *preas = ASN1_BIT_STRING_new();-
224 if (!*preas)
!*preasDescription
TRUEnever evaluated
FALSEnever evaluated
0
225 goto err;
never executed: goto err;
0
226 }
never executed: end of block
0
227 for (pbn = reason_flags; pbn->lname; pbn++) {
pbn->lnameDescription
TRUEnever evaluated
FALSEnever evaluated
0
228 if (!strcmp(pbn->sname, bnam)) {
never executed: __result = (((const unsigned char *) (const char *) ( pbn->sname ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( bnam ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! __extension_... bnam )))); })Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
229 if (!ASN1_BIT_STRING_set_bit(*preas,
!ASN1_BIT_STRI...bn->bitnum, 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
230 pbn->bitnum, 1))
!ASN1_BIT_STRI...bn->bitnum, 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
231 goto err;
never executed: goto err;
0
232 break;
never executed: break;
0
233 }-
234 }
never executed: end of block
0
235 if (!pbn->lname)
!pbn->lnameDescription
TRUEnever evaluated
FALSEnever evaluated
0
236 goto err;
never executed: goto err;
0
237 }
never executed: end of block
0
238 ret = 1;-
239-
240err:
code before this statement never executed: err:
0
241 sk_CONF_VALUE_pop_free(rsk, X509V3_conf_free);-
242 return ret;
never executed: return ret;
0
243}-
244-
245static int-
246print_reasons(BIO *out, const char *rname, ASN1_BIT_STRING *rflags, int indent)-
247{-
248 int first = 1;-
249 const BIT_STRING_BITNAME *pbn;-
250-
251 BIO_printf(out, "%*s%s:\n%*s", indent, "", rname, indent + 2, "");-
252 for (pbn = reason_flags; pbn->lname; pbn++) {
pbn->lnameDescription
TRUEnever evaluated
FALSEnever evaluated
0
253 if (ASN1_BIT_STRING_get_bit(rflags, pbn->bitnum)) {
ASN1_BIT_STRIN..., pbn->bitnum)Description
TRUEnever evaluated
FALSEnever evaluated
0
254 if (first)
firstDescription
TRUEnever evaluated
FALSEnever evaluated
0
255 first = 0;
never executed: first = 0;
0
256 else-
257 BIO_puts(out, ", ");
never executed: BIO_puts(out, ", ");
0
258 BIO_puts(out, pbn->lname);-
259 }
never executed: end of block
0
260 }
never executed: end of block
0
261 if (first)
firstDescription
TRUEnever evaluated
FALSEnever evaluated
0
262 BIO_puts(out, "<EMPTY>\n");
never executed: BIO_puts(out, "<EMPTY>\n");
0
263 else-
264 BIO_puts(out, "\n");
never executed: BIO_puts(out, "\n");
0
265 return 1;
never executed: return 1;
0
266}-
267-
268static DIST_POINT *-
269crldp_from_section(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval)-
270{-
271 int i;-
272 CONF_VALUE *cnf;-
273 DIST_POINT *point = NULL;-
274-
275 point = DIST_POINT_new();-
276 if (!point)
!pointDescription
TRUEnever evaluated
FALSEnever evaluated
0
277 goto err;
never executed: goto err;
0
278 for (i = 0; i < sk_CONF_VALUE_num(nval); i++) {
i < sk_num(((_...NF_VALUE*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
279 int ret;-
280 cnf = sk_CONF_VALUE_value(nval, i);-
281 ret = set_dist_point_name(&point->distpoint, ctx, cnf);-
282 if (ret > 0)
ret > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
283 continue;
never executed: continue;
0
284 if (ret < 0)
ret < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
285 goto err;
never executed: goto err;
0
286 if (!strcmp(cnf->name, "reasons")) {
never executed: __result = (((const unsigned char *) (const char *) ( cnf->name ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "reasons" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! __extension_...sons" )))); })Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
287 if (!set_reasons(&point->reasons, cnf->value))
!set_reasons(&...s, cnf->value)Description
TRUEnever evaluated
FALSEnever evaluated
0
288 goto err;
never executed: goto err;
0
289 }
never executed: end of block
0
290 else if (!strcmp(cnf->name, "CRLissuer")) {
never executed: __result = (((const unsigned char *) (const char *) ( cnf->name ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "CRLissuer" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! __extension_...suer" )))); })Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
291 point->CRLissuer =-
292 gnames_from_sectname(ctx, cnf->value);-
293 if (!point->CRLissuer)
!point->CRLissuerDescription
TRUEnever evaluated
FALSEnever evaluated
0
294 goto err;
never executed: goto err;
0
295 }
never executed: end of block
0
296 }
never executed: end of block
0
297-
298 return point;
never executed: return point;
0
299-
300err:-
301 DIST_POINT_free(point);-
302 return NULL;
never executed: return ((void *)0) ;
0
303}-
304-
305static void *-
306v2i_crld(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,-
307 STACK_OF(CONF_VALUE) *nval)-
308{-
309 STACK_OF(DIST_POINT) *crld = NULL;-
310 GENERAL_NAMES *gens = NULL;-
311 GENERAL_NAME *gen = NULL;-
312 CONF_VALUE *cnf;-
313 int i;-
314-
315 if (!(crld = sk_DIST_POINT_new_null()))
!(crld = ((str...k_new_null()))Description
TRUEnever evaluated
FALSEnever evaluated
0
316 goto merr;
never executed: goto merr;
0
317 for (i = 0; i < sk_CONF_VALUE_num(nval); i++) {
i < sk_num(((_...NF_VALUE*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
318 DIST_POINT *point;-
319 cnf = sk_CONF_VALUE_value(nval, i);-
320 if (!cnf->value) {
!cnf->valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
321 STACK_OF(CONF_VALUE) *dpsect;-
322 dpsect = X509V3_get_section(ctx, cnf->name);-
323 if (!dpsect)
!dpsectDescription
TRUEnever evaluated
FALSEnever evaluated
0
324 goto err;
never executed: goto err;
0
325 point = crldp_from_section(ctx, dpsect);-
326 X509V3_section_free(ctx, dpsect);-
327 if (!point)
!pointDescription
TRUEnever evaluated
FALSEnever evaluated
0
328 goto err;
never executed: goto err;
0
329 if (!sk_DIST_POINT_push(crld, point)) {
!sk_push(((_ST...ST_POINT*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
330 DIST_POINT_free(point);-
331 goto merr;
never executed: goto merr;
0
332 }-
333 } else {
never executed: end of block
0
334 if (!(gen = v2i_GENERAL_NAME(method, ctx, cnf)))
!(gen = v2i_GE...od, ctx, cnf))Description
TRUEnever evaluated
FALSEnever evaluated
0
335 goto err;
never executed: goto err;
0
336 if (!(gens = GENERAL_NAMES_new()))
!(gens = GENERAL_NAMES_new())Description
TRUEnever evaluated
FALSEnever evaluated
0
337 goto merr;
never executed: goto merr;
0
338 if (!sk_GENERAL_NAME_push(gens, gen))
!sk_push(((_ST...RAL_NAME*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
339 goto merr;
never executed: goto merr;
0
340 gen = NULL;-
341 if (!(point = DIST_POINT_new()))
!(point = DIST_POINT_new())Description
TRUEnever evaluated
FALSEnever evaluated
0
342 goto merr;
never executed: goto merr;
0
343 if (!sk_DIST_POINT_push(crld, point)) {
!sk_push(((_ST...ST_POINT*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
344 DIST_POINT_free(point);-
345 goto merr;
never executed: goto merr;
0
346 }-
347 if (!(point->distpoint = DIST_POINT_NAME_new()))
!(point->distp...NT_NAME_new())Description
TRUEnever evaluated
FALSEnever evaluated
0
348 goto merr;
never executed: goto merr;
0
349 point->distpoint->name.fullname = gens;-
350 point->distpoint->type = 0;-
351 gens = NULL;-
352 }
never executed: end of block
0
353 }-
354 return crld;
never executed: return crld;
0
355-
356merr:-
357 X509V3error(ERR_R_MALLOC_FAILURE);-
358err:
code before this statement never executed: err:
0
359 GENERAL_NAME_free(gen);-
360 GENERAL_NAMES_free(gens);-
361 sk_DIST_POINT_pop_free(crld, DIST_POINT_free);-
362 return NULL;
never executed: return ((void *)0) ;
0
363}-
364-
365static int-
366dpn_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg)-
367{-
368 DIST_POINT_NAME *dpn = (DIST_POINT_NAME *)*pval;-
369-
370 switch (operation) {-
371 case ASN1_OP_NEW_POST:
never executed: case 1:
0
372 dpn->dpname = NULL;-
373 break;
never executed: break;
0
374-
375 case ASN1_OP_FREE_POST:
never executed: case 3:
0
376 if (dpn->dpname)
dpn->dpnameDescription
TRUEnever evaluated
FALSEnever evaluated
0
377 X509_NAME_free(dpn->dpname);
never executed: X509_NAME_free(dpn->dpname);
0
378 break;
never executed: break;
0
379 }-
380 return 1;
never executed: return 1;
0
381}-
382-
383-
384static const ASN1_AUX DIST_POINT_NAME_aux = {-
385 .app_data = NULL,-
386 .flags = 0,-
387 .ref_offset = 0,-
388 .ref_lock = 0,-
389 .asn1_cb = dpn_cb,-
390 .enc_offset = 0,-
391};-
392static const ASN1_TEMPLATE DIST_POINT_NAME_ch_tt[] = {-
393 {-
394 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF,-
395 .tag = 0,-
396 .offset = offsetof(DIST_POINT_NAME, name.fullname),-
397 .field_name = "name.fullname",-
398 .item = &GENERAL_NAME_it,-
399 },-
400 {-
401 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SET_OF,-
402 .tag = 1,-
403 .offset = offsetof(DIST_POINT_NAME, name.relativename),-
404 .field_name = "name.relativename",-
405 .item = &X509_NAME_ENTRY_it,-
406 },-
407};-
408-
409const ASN1_ITEM DIST_POINT_NAME_it = {-
410 .itype = ASN1_ITYPE_CHOICE,-
411 .utype = offsetof(DIST_POINT_NAME, type),-
412 .templates = DIST_POINT_NAME_ch_tt,-
413 .tcount = sizeof(DIST_POINT_NAME_ch_tt) / sizeof(ASN1_TEMPLATE),-
414 .funcs = &DIST_POINT_NAME_aux,-
415 .size = sizeof(DIST_POINT_NAME),-
416 .sname = "DIST_POINT_NAME",-
417};-
418-
419-
420-
421DIST_POINT_NAME *-
422d2i_DIST_POINT_NAME(DIST_POINT_NAME **a, const unsigned char **in, long len)-
423{-
424 return (DIST_POINT_NAME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
never executed: return (DIST_POINT_NAME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &DIST_POINT_NAME_it);
0
425 &DIST_POINT_NAME_it);
never executed: return (DIST_POINT_NAME *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &DIST_POINT_NAME_it);
0
426}-
427-
428int-
429i2d_DIST_POINT_NAME(DIST_POINT_NAME *a, unsigned char **out)-
430{-
431 return ASN1_item_i2d((ASN1_VALUE *)a, out, &DIST_POINT_NAME_it);
never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, &DIST_POINT_NAME_it);
0
432}-
433-
434DIST_POINT_NAME *-
435DIST_POINT_NAME_new(void)-
436{-
437 return (DIST_POINT_NAME *)ASN1_item_new(&DIST_POINT_NAME_it);
never executed: return (DIST_POINT_NAME *)ASN1_item_new(&DIST_POINT_NAME_it);
0
438}-
439-
440void-
441DIST_POINT_NAME_free(DIST_POINT_NAME *a)-
442{-
443 ASN1_item_free((ASN1_VALUE *)a, &DIST_POINT_NAME_it);-
444}
executed 1 time by 1 test: end of block
Executed by:
  • freenull
1
445-
446static const ASN1_TEMPLATE DIST_POINT_seq_tt[] = {-
447 {-
448 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,-
449 .tag = 0,-
450 .offset = offsetof(DIST_POINT, distpoint),-
451 .field_name = "distpoint",-
452 .item = &DIST_POINT_NAME_it,-
453 },-
454 {-
455 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,-
456 .tag = 1,-
457 .offset = offsetof(DIST_POINT, reasons),-
458 .field_name = "reasons",-
459 .item = &ASN1_BIT_STRING_it,-
460 },-
461 {-
462 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,-
463 .tag = 2,-
464 .offset = offsetof(DIST_POINT, CRLissuer),-
465 .field_name = "CRLissuer",-
466 .item = &GENERAL_NAME_it,-
467 },-
468};-
469-
470const ASN1_ITEM DIST_POINT_it = {-
471 .itype = ASN1_ITYPE_SEQUENCE,-
472 .utype = V_ASN1_SEQUENCE,-
473 .templates = DIST_POINT_seq_tt,-
474 .tcount = sizeof(DIST_POINT_seq_tt) / sizeof(ASN1_TEMPLATE),-
475 .funcs = NULL,-
476 .size = sizeof(DIST_POINT),-
477 .sname = "DIST_POINT",-
478};-
479-
480-
481DIST_POINT *-
482d2i_DIST_POINT(DIST_POINT **a, const unsigned char **in, long len)-
483{-
484 return (DIST_POINT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
never executed: return (DIST_POINT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &DIST_POINT_it);
0
485 &DIST_POINT_it);
never executed: return (DIST_POINT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &DIST_POINT_it);
0
486}-
487-
488int-
489i2d_DIST_POINT(DIST_POINT *a, unsigned char **out)-
490{-
491 return ASN1_item_i2d((ASN1_VALUE *)a, out, &DIST_POINT_it);
never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, &DIST_POINT_it);
0
492}-
493-
494DIST_POINT *-
495DIST_POINT_new(void)-
496{-
497 return (DIST_POINT *)ASN1_item_new(&DIST_POINT_it);
never executed: return (DIST_POINT *)ASN1_item_new(&DIST_POINT_it);
0
498}-
499-
500void-
501DIST_POINT_free(DIST_POINT *a)-
502{-
503 ASN1_item_free((ASN1_VALUE *)a, &DIST_POINT_it);-
504}
executed 1 time by 1 test: end of block
Executed by:
  • freenull
1
505-
506static const ASN1_TEMPLATE CRL_DIST_POINTS_item_tt = {-
507 .flags = ASN1_TFLG_SEQUENCE_OF,-
508 .tag = 0,-
509 .offset = 0,-
510 .field_name = "CRLDistributionPoints",-
511 .item = &DIST_POINT_it,-
512};-
513-
514const ASN1_ITEM CRL_DIST_POINTS_it = {-
515 .itype = ASN1_ITYPE_PRIMITIVE,-
516 .utype = -1,-
517 .templates = &CRL_DIST_POINTS_item_tt,-
518 .tcount = 0,-
519 .funcs = NULL,-
520 .size = 0,-
521 .sname = "CRL_DIST_POINTS",-
522};-
523-
524-
525CRL_DIST_POINTS *-
526d2i_CRL_DIST_POINTS(CRL_DIST_POINTS **a, const unsigned char **in, long len)-
527{-
528 return (CRL_DIST_POINTS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
never executed: return (CRL_DIST_POINTS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &CRL_DIST_POINTS_it);
0
529 &CRL_DIST_POINTS_it);
never executed: return (CRL_DIST_POINTS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &CRL_DIST_POINTS_it);
0
530}-
531-
532int-
533i2d_CRL_DIST_POINTS(CRL_DIST_POINTS *a, unsigned char **out)-
534{-
535 return ASN1_item_i2d((ASN1_VALUE *)a, out, &CRL_DIST_POINTS_it);
never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, &CRL_DIST_POINTS_it);
0
536}-
537-
538CRL_DIST_POINTS *-
539CRL_DIST_POINTS_new(void)-
540{-
541 return (CRL_DIST_POINTS *)ASN1_item_new(&CRL_DIST_POINTS_it);
never executed: return (CRL_DIST_POINTS *)ASN1_item_new(&CRL_DIST_POINTS_it);
0
542}-
543-
544void-
545CRL_DIST_POINTS_free(CRL_DIST_POINTS *a)-
546{-
547 ASN1_item_free((ASN1_VALUE *)a, &CRL_DIST_POINTS_it);-
548}
executed 245 times by 8 tests: end of block
Executed by:
  • asn1test
  • freenull
  • keypairtest
  • libcrypto.so.44.0.1
  • servertest
  • ssltest
  • tlstest
  • verifytest
245
549-
550static const ASN1_TEMPLATE ISSUING_DIST_POINT_seq_tt[] = {-
551 {-
552 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,-
553 .tag = 0,-
554 .offset = offsetof(ISSUING_DIST_POINT, distpoint),-
555 .field_name = "distpoint",-
556 .item = &DIST_POINT_NAME_it,-
557 },-
558 {-
559 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,-
560 .tag = 1,-
561 .offset = offsetof(ISSUING_DIST_POINT, onlyuser),-
562 .field_name = "onlyuser",-
563 .item = &ASN1_FBOOLEAN_it,-
564 },-
565 {-
566 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,-
567 .tag = 2,-
568 .offset = offsetof(ISSUING_DIST_POINT, onlyCA),-
569 .field_name = "onlyCA",-
570 .item = &ASN1_FBOOLEAN_it,-
571 },-
572 {-
573 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,-
574 .tag = 3,-
575 .offset = offsetof(ISSUING_DIST_POINT, onlysomereasons),-
576 .field_name = "onlysomereasons",-
577 .item = &ASN1_BIT_STRING_it,-
578 },-
579 {-
580 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,-
581 .tag = 4,-
582 .offset = offsetof(ISSUING_DIST_POINT, indirectCRL),-
583 .field_name = "indirectCRL",-
584 .item = &ASN1_FBOOLEAN_it,-
585 },-
586 {-
587 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,-
588 .tag = 5,-
589 .offset = offsetof(ISSUING_DIST_POINT, onlyattr),-
590 .field_name = "onlyattr",-
591 .item = &ASN1_FBOOLEAN_it,-
592 },-
593};-
594-
595const ASN1_ITEM ISSUING_DIST_POINT_it = {-
596 .itype = ASN1_ITYPE_SEQUENCE,-
597 .utype = V_ASN1_SEQUENCE,-
598 .templates = ISSUING_DIST_POINT_seq_tt,-
599 .tcount = sizeof(ISSUING_DIST_POINT_seq_tt) / sizeof(ASN1_TEMPLATE),-
600 .funcs = NULL,-
601 .size = sizeof(ISSUING_DIST_POINT),-
602 .sname = "ISSUING_DIST_POINT",-
603};-
604-
605-
606ISSUING_DIST_POINT *-
607d2i_ISSUING_DIST_POINT(ISSUING_DIST_POINT **a, const unsigned char **in, long len)-
608{-
609 return (ISSUING_DIST_POINT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,
never executed: return (ISSUING_DIST_POINT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &ISSUING_DIST_POINT_it);
0
610 &ISSUING_DIST_POINT_it);
never executed: return (ISSUING_DIST_POINT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &ISSUING_DIST_POINT_it);
0
611}-
612-
613int-
614i2d_ISSUING_DIST_POINT(ISSUING_DIST_POINT *a, unsigned char **out)-
615{-
616 return ASN1_item_i2d((ASN1_VALUE *)a, out, &ISSUING_DIST_POINT_it);
never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, &ISSUING_DIST_POINT_it);
0
617}-
618-
619ISSUING_DIST_POINT *-
620ISSUING_DIST_POINT_new(void)-
621{-
622 return (ISSUING_DIST_POINT *)ASN1_item_new(&ISSUING_DIST_POINT_it);
never executed: return (ISSUING_DIST_POINT *)ASN1_item_new(&ISSUING_DIST_POINT_it);
0
623}-
624-
625void-
626ISSUING_DIST_POINT_free(ISSUING_DIST_POINT *a)-
627{-
628 ASN1_item_free((ASN1_VALUE *)a, &ISSUING_DIST_POINT_it);-
629}
executed 1 time by 1 test: end of block
Executed by:
  • freenull
1
630-
631static int i2r_idp(const X509V3_EXT_METHOD *method, void *pidp, BIO *out,-
632 int indent);-
633static void *v2i_idp(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,-
634 STACK_OF(CONF_VALUE) *nval);-
635-
636const X509V3_EXT_METHOD v3_idp = {-
637 NID_issuing_distribution_point, X509V3_EXT_MULTILINE,-
638 &ISSUING_DIST_POINT_it,-
639 0, 0, 0, 0,-
640 0, 0,-
641 0,-
642 v2i_idp,-
643 i2r_idp, 0,-
644 NULL-
645};-
646-
647static void *-
648v2i_idp(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,-
649 STACK_OF(CONF_VALUE) *nval)-
650{-
651 ISSUING_DIST_POINT *idp = NULL;-
652 CONF_VALUE *cnf;-
653 char *name, *val;-
654 int i, ret;-
655-
656 idp = ISSUING_DIST_POINT_new();-
657 if (!idp)
!idpDescription
TRUEnever evaluated
FALSEnever evaluated
0
658 goto merr;
never executed: goto merr;
0
659 for (i = 0; i < sk_CONF_VALUE_num(nval); i++) {
i < sk_num(((_...NF_VALUE*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
660 cnf = sk_CONF_VALUE_value(nval, i);-
661 name = cnf->name;-
662 val = cnf->value;-
663 ret = set_dist_point_name(&idp->distpoint, ctx, cnf);-
664 if (ret > 0)
ret > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
665 continue;
never executed: continue;
0
666 if (ret < 0)
ret < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
667 goto err;
never executed: goto err;
0
668 if (!strcmp(name, "onlyuser")) {
never executed: __result = (((const unsigned char *) (const char *) ( name ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "onlyuser" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! __extension_...user" )))); })Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
669 if (!X509V3_get_value_bool(cnf, &idp->onlyuser))
!X509V3_get_va...idp->onlyuser)Description
TRUEnever evaluated
FALSEnever evaluated
0
670 goto err;
never executed: goto err;
0
671 }
never executed: end of block
0
672 else if (!strcmp(name, "onlyCA")) {
never executed: __result = (((const unsigned char *) (const char *) ( name ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "onlyCA" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! __extension_...lyCA" )))); })Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
673 if (!X509V3_get_value_bool(cnf, &idp->onlyCA))
!X509V3_get_va... &idp->onlyCA)Description
TRUEnever evaluated
FALSEnever evaluated
0
674 goto err;
never executed: goto err;
0
675 }
never executed: end of block
0
676 else if (!strcmp(name, "onlyAA")) {
never executed: __result = (((const unsigned char *) (const char *) ( name ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "onlyAA" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! __extension_...lyAA" )))); })Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
677 if (!X509V3_get_value_bool(cnf, &idp->onlyattr))
!X509V3_get_va...idp->onlyattr)Description
TRUEnever evaluated
FALSEnever evaluated
0
678 goto err;
never executed: goto err;
0
679 }
never executed: end of block
0
680 else if (!strcmp(name, "indirectCRL")) {
never executed: __result = (((const unsigned char *) (const char *) ( name ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "indirectCRL" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! __extension_...tCRL" )))); })Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
681 if (!X509V3_get_value_bool(cnf, &idp->indirectCRL))
!X509V3_get_va...->indirectCRL)Description
TRUEnever evaluated
FALSEnever evaluated
0
682 goto err;
never executed: goto err;
0
683 }
never executed: end of block
0
684 else if (!strcmp(name, "onlysomereasons")) {
never executed: __result = (((const unsigned char *) (const char *) ( name ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "onlysomereasons" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! __extension_...sons" )))); })Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
685 if (!set_reasons(&idp->onlysomereasons, val))
!set_reasons(&...ereasons, val)Description
TRUEnever evaluated
FALSEnever evaluated
0
686 goto err;
never executed: goto err;
0
687 } else {
never executed: end of block
0
688 X509V3error(X509V3_R_INVALID_NAME);-
689 X509V3_conf_err(cnf);-
690 goto err;
never executed: goto err;
0
691 }-
692 }-
693 return idp;
never executed: return idp;
0
694-
695merr:-
696 X509V3error(ERR_R_MALLOC_FAILURE);-
697err:
code before this statement never executed: err:
0
698 ISSUING_DIST_POINT_free(idp);-
699 return NULL;
never executed: return ((void *)0) ;
0
700}-
701-
702static int-
703print_gens(BIO *out, STACK_OF(GENERAL_NAME) *gens, int indent)-
704{-
705 int i;-
706-
707 for (i = 0; i < sk_GENERAL_NAME_num(gens); i++) {
i < sk_num(((_...RAL_NAME*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
708 BIO_printf(out, "%*s", indent + 2, "");-
709 GENERAL_NAME_print(out, sk_GENERAL_NAME_value(gens, i));-
710 BIO_puts(out, "\n");-
711 }
never executed: end of block
0
712 return 1;
never executed: return 1;
0
713}-
714-
715static int-
716print_distpoint(BIO *out, DIST_POINT_NAME *dpn, int indent)-
717{-
718 if (dpn->type == 0) {
dpn->type == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
719 BIO_printf(out, "%*sFull Name:\n", indent, "");-
720 print_gens(out, dpn->name.fullname, indent);-
721 } else {
never executed: end of block
0
722 X509_NAME ntmp;-
723 ntmp.entries = dpn->name.relativename;-
724 BIO_printf(out, "%*sRelative Name:\n%*s",-
725 indent, "", indent + 2, "");-
726 X509_NAME_print_ex(out, &ntmp, 0, XN_FLAG_ONELINE);-
727 BIO_puts(out, "\n");-
728 }
never executed: end of block
0
729 return 1;
never executed: return 1;
0
730}-
731-
732static int-
733i2r_idp(const X509V3_EXT_METHOD *method, void *pidp, BIO *out, int indent)-
734{-
735 ISSUING_DIST_POINT *idp = pidp;-
736-
737 if (idp->distpoint)
idp->distpointDescription
TRUEnever evaluated
FALSEnever evaluated
0
738 print_distpoint(out, idp->distpoint, indent);
never executed: print_distpoint(out, idp->distpoint, indent);
0
739 if (idp->onlyuser > 0)
idp->onlyuser > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
740 BIO_printf(out, "%*sOnly User Certificates\n", indent, "");
never executed: BIO_printf(out, "%*sOnly User Certificates\n", indent, "");
0
741 if (idp->onlyCA > 0)
idp->onlyCA > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
742 BIO_printf(out, "%*sOnly CA Certificates\n", indent, "");
never executed: BIO_printf(out, "%*sOnly CA Certificates\n", indent, "");
0
743 if (idp->indirectCRL > 0)
idp->indirectCRL > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
744 BIO_printf(out, "%*sIndirect CRL\n", indent, "");
never executed: BIO_printf(out, "%*sIndirect CRL\n", indent, "");
0
745 if (idp->onlysomereasons)
idp->onlysomereasonsDescription
TRUEnever evaluated
FALSEnever evaluated
0
746 print_reasons(out, "Only Some Reasons",
never executed: print_reasons(out, "Only Some Reasons", idp->onlysomereasons, indent);
0
747 idp->onlysomereasons, indent);
never executed: print_reasons(out, "Only Some Reasons", idp->onlysomereasons, indent);
0
748 if (idp->onlyattr > 0)
idp->onlyattr > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
749 BIO_printf(out, "%*sOnly Attribute Certificates\n", indent, "");
never executed: BIO_printf(out, "%*sOnly Attribute Certificates\n", indent, "");
0
750 if (!idp->distpoint && (idp->onlyuser <= 0) && (idp->onlyCA <= 0) &&
!idp->distpointDescription
TRUEnever evaluated
FALSEnever evaluated
(idp->onlyuser <= 0)Description
TRUEnever evaluated
FALSEnever evaluated
(idp->onlyCA <= 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
751 (idp->indirectCRL <= 0) && !idp->onlysomereasons &&
(idp->indirectCRL <= 0)Description
TRUEnever evaluated
FALSEnever evaluated
!idp->onlysomereasonsDescription
TRUEnever evaluated
FALSEnever evaluated
0
752 (idp->onlyattr <= 0))
(idp->onlyattr <= 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
753 BIO_printf(out, "%*s<EMPTY>\n", indent, "");
never executed: BIO_printf(out, "%*s<EMPTY>\n", indent, "");
0
754-
755 return 1;
never executed: return 1;
0
756}-
757-
758static int-
759i2r_crldp(const X509V3_EXT_METHOD *method, void *pcrldp, BIO *out, int indent)-
760{-
761 STACK_OF(DIST_POINT) *crld = pcrldp;-
762 DIST_POINT *point;-
763 int i;-
764-
765 for (i = 0; i < sk_DIST_POINT_num(crld); i++) {
i < sk_num(((_...ST_POINT*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
766 BIO_puts(out, "\n");-
767 point = sk_DIST_POINT_value(crld, i);-
768 if (point->distpoint)
point->distpointDescription
TRUEnever evaluated
FALSEnever evaluated
0
769 print_distpoint(out, point->distpoint, indent);
never executed: print_distpoint(out, point->distpoint, indent);
0
770 if (point->reasons)
point->reasonsDescription
TRUEnever evaluated
FALSEnever evaluated
0
771 print_reasons(out, "Reasons", point->reasons,
never executed: print_reasons(out, "Reasons", point->reasons, indent);
0
772 indent);
never executed: print_reasons(out, "Reasons", point->reasons, indent);
0
773 if (point->CRLissuer) {
point->CRLissuerDescription
TRUEnever evaluated
FALSEnever evaluated
0
774 BIO_printf(out, "%*sCRL Issuer:\n", indent, "");-
775 print_gens(out, point->CRLissuer, indent);-
776 }
never executed: end of block
0
777 }
never executed: end of block
0
778 return 1;
never executed: return 1;
0
779}-
780-
781int-
782DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, X509_NAME *iname)-
783{-
784 int i;-
785 STACK_OF(X509_NAME_ENTRY) *frag;-
786 X509_NAME_ENTRY *ne;-
787-
788 if (!dpn || (dpn->type != 1))
!dpnDescription
TRUEnever evaluated
FALSEnever evaluated
(dpn->type != 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
789 return 1;
never executed: return 1;
0
790 frag = dpn->name.relativename;-
791 dpn->dpname = X509_NAME_dup(iname);-
792 if (!dpn->dpname)
!dpn->dpnameDescription
TRUEnever evaluated
FALSEnever evaluated
0
793 return 0;
never executed: return 0;
0
794 for (i = 0; i < sk_X509_NAME_ENTRY_num(frag); i++) {
i < sk_num(((_...ME_ENTRY*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
795 ne = sk_X509_NAME_ENTRY_value(frag, i);-
796 if (!X509_NAME_add_entry(dpn->dpname, ne, -1, i ? 0 : 1)) {
!X509_NAME_add...-1, i ? 0 : 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
797 X509_NAME_free(dpn->dpname);-
798 dpn->dpname = NULL;-
799 return 0;
never executed: return 0;
0
800 }-
801 }
never executed: end of block
0
802 /* generate cached encoding of name */-
803 if (i2d_X509_NAME(dpn->dpname, NULL) < 0) {
i2d_X509_NAME(...oid *)0) ) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
804 X509_NAME_free(dpn->dpname);-
805 dpn->dpname = NULL;-
806 return 0;
never executed: return 0;
0
807 }-
808 return 1;
never executed: return 1;
0
809}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2