OpenCoverage

v3_pmaps.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/x509v3/v3_pmaps.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: v3_pmaps.c,v 1.11 2017/01/29 17:49:23 beck Exp $ */-
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL-
3 * project.-
4 */-
5/* ====================================================================-
6 * Copyright (c) 2003 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-
60#include <stdio.h>-
61-
62#include <openssl/asn1t.h>-
63#include <openssl/conf.h>-
64#include <openssl/err.h>-
65#include <openssl/x509v3.h>-
66-
67static void *v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method,-
68 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);-
69static STACK_OF(CONF_VALUE) *i2v_POLICY_MAPPINGS(-
70 const X509V3_EXT_METHOD *method, void *pmps, STACK_OF(CONF_VALUE) *extlist);-
71-
72const X509V3_EXT_METHOD v3_policy_mappings = {-
73 .ext_nid = NID_policy_mappings,-
74 .ext_flags = 0,-
75 .it = &POLICY_MAPPINGS_it,-
76 .ext_new = NULL,-
77 .ext_free = NULL,-
78 .d2i = NULL,-
79 .i2d = NULL,-
80 .i2s = NULL,-
81 .s2i = NULL,-
82 .i2v = i2v_POLICY_MAPPINGS,-
83 .v2i = v2i_POLICY_MAPPINGS,-
84 .i2r = NULL,-
85 .r2i = NULL,-
86 .usr_data = NULL,-
87};-
88-
89static const ASN1_TEMPLATE POLICY_MAPPING_seq_tt[] = {-
90 {-
91 .flags = 0,-
92 .tag = 0,-
93 .offset = offsetof(POLICY_MAPPING, issuerDomainPolicy),-
94 .field_name = "issuerDomainPolicy",-
95 .item = &ASN1_OBJECT_it,-
96 },-
97 {-
98 .flags = 0,-
99 .tag = 0,-
100 .offset = offsetof(POLICY_MAPPING, subjectDomainPolicy),-
101 .field_name = "subjectDomainPolicy",-
102 .item = &ASN1_OBJECT_it,-
103 },-
104};-
105-
106const ASN1_ITEM POLICY_MAPPING_it = {-
107 .itype = ASN1_ITYPE_SEQUENCE,-
108 .utype = V_ASN1_SEQUENCE,-
109 .templates = POLICY_MAPPING_seq_tt,-
110 .tcount = sizeof(POLICY_MAPPING_seq_tt) / sizeof(ASN1_TEMPLATE),-
111 .funcs = NULL,-
112 .size = sizeof(POLICY_MAPPING),-
113 .sname = "POLICY_MAPPING",-
114};-
115-
116static const ASN1_TEMPLATE POLICY_MAPPINGS_item_tt = {-
117 .flags = ASN1_TFLG_SEQUENCE_OF,-
118 .tag = 0,-
119 .offset = 0,-
120 .field_name = "POLICY_MAPPINGS",-
121 .item = &POLICY_MAPPING_it,-
122};-
123-
124const ASN1_ITEM POLICY_MAPPINGS_it = {-
125 .itype = ASN1_ITYPE_PRIMITIVE,-
126 .utype = -1,-
127 .templates = &POLICY_MAPPINGS_item_tt,-
128 .tcount = 0,-
129 .funcs = NULL,-
130 .size = 0,-
131 .sname = "POLICY_MAPPINGS",-
132};-
133-
134-
135POLICY_MAPPING *-
136POLICY_MAPPING_new(void)-
137{-
138 return (POLICY_MAPPING*)ASN1_item_new(&POLICY_MAPPING_it);
never executed: return (POLICY_MAPPING*)ASN1_item_new(&POLICY_MAPPING_it);
0
139}-
140-
141void-
142POLICY_MAPPING_free(POLICY_MAPPING *a)-
143{-
144 ASN1_item_free((ASN1_VALUE *)a, &POLICY_MAPPING_it);-
145}
executed 1 time by 1 test: end of block
Executed by:
  • freenull
1
146-
147static STACK_OF(CONF_VALUE) *-
148i2v_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, void *a,-
149 STACK_OF(CONF_VALUE) *ext_list)-
150{-
151 POLICY_MAPPINGS *pmaps = a;-
152 POLICY_MAPPING *pmap;-
153 int i;-
154 char obj_tmp1[80];-
155 char obj_tmp2[80];-
156-
157 for (i = 0; i < sk_POLICY_MAPPING_num(pmaps); i++) {
i < sk_num(((_..._MAPPING*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
158 pmap = sk_POLICY_MAPPING_value(pmaps, i);-
159 i2t_ASN1_OBJECT(obj_tmp1, 80, pmap->issuerDomainPolicy);-
160 i2t_ASN1_OBJECT(obj_tmp2, 80, pmap->subjectDomainPolicy);-
161 X509V3_add_value(obj_tmp1, obj_tmp2, &ext_list);-
162 }
never executed: end of block
0
163 return ext_list;
never executed: return ext_list;
0
164}-
165-
166static void *-
167v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,-
168 STACK_OF(CONF_VALUE) *nval)-
169{-
170 POLICY_MAPPINGS *pmaps = NULL;-
171 POLICY_MAPPING *pmap = NULL;-
172 ASN1_OBJECT *obj1 = NULL, *obj2 = NULL;-
173 CONF_VALUE *val;-
174 int i, rc;-
175-
176 if (!(pmaps = sk_POLICY_MAPPING_new_null())) {
!(pmaps = ((st...k_new_null()))Description
TRUEnever evaluated
FALSEnever evaluated
0
177 X509V3error(ERR_R_MALLOC_FAILURE);-
178 return NULL;
never executed: return ((void *)0) ;
0
179 }-
180-
181 for (i = 0; i < sk_CONF_VALUE_num(nval); i++) {
i < sk_num(((_...NF_VALUE*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
182 val = sk_CONF_VALUE_value(nval, i);-
183 if (!val->value || !val->name) {
!val->valueDescription
TRUEnever evaluated
FALSEnever evaluated
!val->nameDescription
TRUEnever evaluated
FALSEnever evaluated
0
184 rc = X509V3_R_INVALID_OBJECT_IDENTIFIER;-
185 goto err;
never executed: goto err;
0
186 }-
187 obj1 = OBJ_txt2obj(val->name, 0);-
188 obj2 = OBJ_txt2obj(val->value, 0);-
189 if (!obj1 || !obj2) {
!obj1Description
TRUEnever evaluated
FALSEnever evaluated
!obj2Description
TRUEnever evaluated
FALSEnever evaluated
0
190 rc = X509V3_R_INVALID_OBJECT_IDENTIFIER;-
191 goto err;
never executed: goto err;
0
192 }-
193 pmap = POLICY_MAPPING_new();-
194 if (!pmap) {
!pmapDescription
TRUEnever evaluated
FALSEnever evaluated
0
195 rc = ERR_R_MALLOC_FAILURE;-
196 goto err;
never executed: goto err;
0
197 }-
198 pmap->issuerDomainPolicy = obj1;-
199 pmap->subjectDomainPolicy = obj2;-
200 obj1 = obj2 = NULL;-
201 if (sk_POLICY_MAPPING_push(pmaps, pmap) == 0) {
sk_push(((_STA...ING*)0))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
202 rc = ERR_R_MALLOC_FAILURE;-
203 goto err;
never executed: goto err;
0
204 }-
205 pmap = NULL;-
206 }
never executed: end of block
0
207 return pmaps;
never executed: return pmaps;
0
208-
209err:-
210 sk_POLICY_MAPPING_pop_free(pmaps, POLICY_MAPPING_free);-
211 X509V3error(rc);-
212 if (rc == X509V3_R_INVALID_OBJECT_IDENTIFIER)
rc == 110Description
TRUEnever evaluated
FALSEnever evaluated
0
213 X509V3_conf_err(val);
never executed: ERR_asprintf_error_data( "section:%s,name:%s,value:%s", val->section, val->name, val->value);
0
214 ASN1_OBJECT_free(obj1);-
215 ASN1_OBJECT_free(obj2);-
216 POLICY_MAPPING_free(pmap);-
217 return NULL;
never executed: return ((void *)0) ;
0
218}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2