Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/x509v3/pcy_cache.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | static int policy_data_cmp(const X509_POLICY_DATA *const *a, | - | ||||||||||||
4 | const X509_POLICY_DATA *const *b); | - | ||||||||||||
5 | static int policy_cache_set_int(long *out, ASN1_INTEGER *value); | - | ||||||||||||
6 | - | |||||||||||||
7 | - | |||||||||||||
8 | - | |||||||||||||
9 | - | |||||||||||||
10 | - | |||||||||||||
11 | - | |||||||||||||
12 | static int policy_cache_create(X509 *x, | - | ||||||||||||
13 | CERTIFICATEPOLICIES *policies, int crit) | - | ||||||||||||
14 | { | - | ||||||||||||
15 | int i, num, ret = 0; | - | ||||||||||||
16 | X509_POLICY_CACHE *cache = x->policy_cache; | - | ||||||||||||
17 | X509_POLICY_DATA *data = | - | ||||||||||||
18 | ((void *)0) | - | ||||||||||||
19 | ; | - | ||||||||||||
20 | POLICYINFO *policy; | - | ||||||||||||
21 | - | |||||||||||||
22 | if ((
| 0 | ||||||||||||
23 | goto never executed: bad_policy;goto bad_policy; never executed: goto bad_policy; | 0 | ||||||||||||
24 | cache->data = sk_X509_POLICY_DATA_new(policy_data_cmp); | - | ||||||||||||
25 | if (cache->data ==
| 0 | ||||||||||||
26 | ((void *)0)
| 0 | ||||||||||||
27 | ) { | - | ||||||||||||
28 | ERR_put_error(34,(169),((1|64)),__FILE__,38); | - | ||||||||||||
29 | goto never executed: just_cleanup;goto just_cleanup; never executed: goto just_cleanup; | 0 | ||||||||||||
30 | } | - | ||||||||||||
31 | for (i = 0; i < num
| 0 | ||||||||||||
32 | policy = sk_POLICYINFO_value(policies, i); | - | ||||||||||||
33 | data = policy_data_new(policy, | - | ||||||||||||
34 | ((void *)0) | - | ||||||||||||
35 | , crit); | - | ||||||||||||
36 | if (data ==
| 0 | ||||||||||||
37 | ((void *)0)
| 0 | ||||||||||||
38 | ) { | - | ||||||||||||
39 | ERR_put_error(34,(169),((1|64)),__FILE__,45); | - | ||||||||||||
40 | goto never executed: just_cleanup;goto just_cleanup; never executed: goto just_cleanup; | 0 | ||||||||||||
41 | } | - | ||||||||||||
42 | - | |||||||||||||
43 | - | |||||||||||||
44 | - | |||||||||||||
45 | if (OBJ_obj2nid(data->valid_policy) == 746
| 0 | ||||||||||||
46 | if (cache->anyPolicy
| 0 | ||||||||||||
47 | ret = -1; | - | ||||||||||||
48 | goto never executed: bad_policy;goto bad_policy; never executed: goto bad_policy; | 0 | ||||||||||||
49 | } | - | ||||||||||||
50 | cache->anyPolicy = data; | - | ||||||||||||
51 | } never executed: else if (sk_X509_POLICY_DATA_find(cache->data, data) >=0end of block
| 0 | ||||||||||||
52 | ret = -1; | - | ||||||||||||
53 | goto never executed: bad_policy;goto bad_policy; never executed: goto bad_policy; | 0 | ||||||||||||
54 | } else if (!sk_X509_POLICY_DATA_push(cache->data, data)
| 0 | ||||||||||||
55 | ERR_put_error(34,(169),((1|64)),__FILE__,61); | - | ||||||||||||
56 | goto never executed: bad_policy;goto bad_policy; never executed: goto bad_policy; | 0 | ||||||||||||
57 | } | - | ||||||||||||
58 | data = | - | ||||||||||||
59 | ((void *)0) | - | ||||||||||||
60 | ; | - | ||||||||||||
61 | } never executed: end of block | 0 | ||||||||||||
62 | ret = 1; | - | ||||||||||||
63 | - | |||||||||||||
64 | bad_policy: code before this statement never executed: bad_policy: | 0 | ||||||||||||
65 | if (ret == -1
| 0 | ||||||||||||
66 | x->ex_flags |= 0x800; never executed: x->ex_flags |= 0x800; | 0 | ||||||||||||
67 | policy_data_free(data); | - | ||||||||||||
68 | just_cleanup: code before this statement never executed: just_cleanup: | 0 | ||||||||||||
69 | sk_POLICYINFO_pop_free(policies, POLICYINFO_free); | - | ||||||||||||
70 | if (ret <= 0
| 0 | ||||||||||||
71 | sk_X509_POLICY_DATA_pop_free(cache->data, policy_data_free); | - | ||||||||||||
72 | cache->data = | - | ||||||||||||
73 | ((void *)0) | - | ||||||||||||
74 | ; | - | ||||||||||||
75 | } never executed: end of block | 0 | ||||||||||||
76 | return never executed: ret;return ret; never executed: return ret; | 0 | ||||||||||||
77 | } | - | ||||||||||||
78 | - | |||||||||||||
79 | static int policy_cache_new(X509 *x) | - | ||||||||||||
80 | { | - | ||||||||||||
81 | X509_POLICY_CACHE *cache; | - | ||||||||||||
82 | ASN1_INTEGER *ext_any = | - | ||||||||||||
83 | ((void *)0) | - | ||||||||||||
84 | ; | - | ||||||||||||
85 | POLICY_CONSTRAINTS *ext_pcons = | - | ||||||||||||
86 | ((void *)0) | - | ||||||||||||
87 | ; | - | ||||||||||||
88 | CERTIFICATEPOLICIES *ext_cpols = | - | ||||||||||||
89 | ((void *)0) | - | ||||||||||||
90 | ; | - | ||||||||||||
91 | POLICY_MAPPINGS *ext_pmaps = | - | ||||||||||||
92 | ((void *)0) | - | ||||||||||||
93 | ; | - | ||||||||||||
94 | int i; | - | ||||||||||||
95 | - | |||||||||||||
96 | if (x->policy_cache !=
| 0 | ||||||||||||
97 | ((void *)0)
| 0 | ||||||||||||
98 | ) | - | ||||||||||||
99 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
100 | cache = CRYPTO_malloc(sizeof(*cache), __FILE__, 92); | - | ||||||||||||
101 | if (cache ==
| 0 | ||||||||||||
102 | ((void *)0)
| 0 | ||||||||||||
103 | ) { | - | ||||||||||||
104 | ERR_put_error(34,(170),((1|64)),__FILE__,94); | - | ||||||||||||
105 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
106 | } | - | ||||||||||||
107 | cache->anyPolicy = | - | ||||||||||||
108 | ((void *)0) | - | ||||||||||||
109 | ; | - | ||||||||||||
110 | cache->data = | - | ||||||||||||
111 | ((void *)0) | - | ||||||||||||
112 | ; | - | ||||||||||||
113 | cache->any_skip = -1; | - | ||||||||||||
114 | cache->explicit_skip = -1; | - | ||||||||||||
115 | cache->map_skip = -1; | - | ||||||||||||
116 | - | |||||||||||||
117 | x->policy_cache = cache; | - | ||||||||||||
118 | - | |||||||||||||
119 | - | |||||||||||||
120 | - | |||||||||||||
121 | - | |||||||||||||
122 | - | |||||||||||||
123 | ext_pcons = X509_get_ext_d2i(x, 401, &i, | - | ||||||||||||
124 | ((void *)0) | - | ||||||||||||
125 | ); | - | ||||||||||||
126 | - | |||||||||||||
127 | if (!ext_pcons
| 0 | ||||||||||||
128 | if (i != -1
| 0 | ||||||||||||
129 | goto never executed: bad_cache;goto bad_cache; never executed: goto bad_cache; | 0 | ||||||||||||
130 | } never executed: else {end of block | 0 | ||||||||||||
131 | if (!ext_pcons->requireExplicitPolicy
| 0 | ||||||||||||
132 | && !ext_pcons->inhibitPolicyMapping
| 0 | ||||||||||||
133 | goto never executed: bad_cache;goto bad_cache; never executed: goto bad_cache; | 0 | ||||||||||||
134 | if (!policy_cache_set_int(&cache->explicit_skip,
| 0 | ||||||||||||
135 | ext_pcons->requireExplicitPolicy)
| 0 | ||||||||||||
136 | goto never executed: bad_cache;goto bad_cache; never executed: goto bad_cache; | 0 | ||||||||||||
137 | if (!policy_cache_set_int(&cache->map_skip,
| 0 | ||||||||||||
138 | ext_pcons->inhibitPolicyMapping)
| 0 | ||||||||||||
139 | goto never executed: bad_cache;goto bad_cache; never executed: goto bad_cache; | 0 | ||||||||||||
140 | } never executed: end of block | 0 | ||||||||||||
141 | - | |||||||||||||
142 | - | |||||||||||||
143 | - | |||||||||||||
144 | ext_cpols = X509_get_ext_d2i(x, 89, &i, | - | ||||||||||||
145 | ((void *)0) | - | ||||||||||||
146 | ); | - | ||||||||||||
147 | - | |||||||||||||
148 | - | |||||||||||||
149 | - | |||||||||||||
150 | - | |||||||||||||
151 | if (!ext_cpols
| 0 | ||||||||||||
152 | - | |||||||||||||
153 | if (i != -1
| 0 | ||||||||||||
154 | goto never executed: bad_cache;goto bad_cache; never executed: goto bad_cache; | 0 | ||||||||||||
155 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
156 | } | - | ||||||||||||
157 | - | |||||||||||||
158 | i = policy_cache_create(x, ext_cpols, i); | - | ||||||||||||
159 | - | |||||||||||||
160 | - | |||||||||||||
161 | - | |||||||||||||
162 | if (i <= 0
| 0 | ||||||||||||
163 | return never executed: i;return i; never executed: return i; | 0 | ||||||||||||
164 | - | |||||||||||||
165 | ext_pmaps = X509_get_ext_d2i(x, 747, &i, | - | ||||||||||||
166 | ((void *)0) | - | ||||||||||||
167 | ); | - | ||||||||||||
168 | - | |||||||||||||
169 | if (!ext_pmaps
| 0 | ||||||||||||
170 | - | |||||||||||||
171 | if (i != -1
| 0 | ||||||||||||
172 | goto never executed: bad_cache;goto bad_cache; never executed: goto bad_cache; | 0 | ||||||||||||
173 | } never executed: else {end of block | 0 | ||||||||||||
174 | i = policy_cache_set_mapping(x, ext_pmaps); | - | ||||||||||||
175 | if (i <= 0
| 0 | ||||||||||||
176 | goto never executed: bad_cache;goto bad_cache; never executed: goto bad_cache; | 0 | ||||||||||||
177 | } never executed: end of block | 0 | ||||||||||||
178 | - | |||||||||||||
179 | ext_any = X509_get_ext_d2i(x, 748, &i, | - | ||||||||||||
180 | ((void *)0) | - | ||||||||||||
181 | ); | - | ||||||||||||
182 | - | |||||||||||||
183 | if (!ext_any
| 0 | ||||||||||||
184 | if (i != -1
| 0 | ||||||||||||
185 | goto never executed: bad_cache;goto bad_cache; never executed: goto bad_cache; | 0 | ||||||||||||
186 | } never executed: else if (!policy_cache_set_int(&cache->any_skip, ext_any)end of block
| 0 | ||||||||||||
187 | goto never executed: bad_cache;goto bad_cache; never executed: goto bad_cache; | 0 | ||||||||||||
188 | goto never executed: just_cleanup;goto just_cleanup; never executed: goto just_cleanup; | 0 | ||||||||||||
189 | - | |||||||||||||
190 | bad_cache: | - | ||||||||||||
191 | x->ex_flags |= 0x800; | - | ||||||||||||
192 | - | |||||||||||||
193 | just_cleanup: code before this statement never executed: just_cleanup: | 0 | ||||||||||||
194 | POLICY_CONSTRAINTS_free(ext_pcons); | - | ||||||||||||
195 | ASN1_INTEGER_free(ext_any); | - | ||||||||||||
196 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
197 | - | |||||||||||||
198 | } | - | ||||||||||||
199 | - | |||||||||||||
200 | void policy_cache_free(X509_POLICY_CACHE *cache) | - | ||||||||||||
201 | { | - | ||||||||||||
202 | if (!cache
| 0-39780 | ||||||||||||
203 | return; executed 39780 times by 1 test: return; Executed by:
| 39780 | ||||||||||||
204 | policy_data_free(cache->anyPolicy); | - | ||||||||||||
205 | sk_X509_POLICY_DATA_pop_free(cache->data, policy_data_free); | - | ||||||||||||
206 | CRYPTO_free(cache, __FILE__, 184); | - | ||||||||||||
207 | } never executed: end of block | 0 | ||||||||||||
208 | - | |||||||||||||
209 | const X509_POLICY_CACHE *policy_cache_set(X509 *x) | - | ||||||||||||
210 | { | - | ||||||||||||
211 | - | |||||||||||||
212 | if (x->policy_cache ==
| 0 | ||||||||||||
213 | ((void *)0)
| 0 | ||||||||||||
214 | ) { | - | ||||||||||||
215 | CRYPTO_THREAD_write_lock(x->lock); | - | ||||||||||||
216 | policy_cache_new(x); | - | ||||||||||||
217 | CRYPTO_THREAD_unlock(x->lock); | - | ||||||||||||
218 | } never executed: end of block | 0 | ||||||||||||
219 | - | |||||||||||||
220 | return never executed: x->policy_cache;return x->policy_cache; never executed: return x->policy_cache; | 0 | ||||||||||||
221 | - | |||||||||||||
222 | } | - | ||||||||||||
223 | - | |||||||||||||
224 | X509_POLICY_DATA *policy_cache_find_data(const X509_POLICY_CACHE *cache, | - | ||||||||||||
225 | const ASN1_OBJECT *id) | - | ||||||||||||
226 | { | - | ||||||||||||
227 | int idx; | - | ||||||||||||
228 | X509_POLICY_DATA tmp; | - | ||||||||||||
229 | tmp.valid_policy = (ASN1_OBJECT *)id; | - | ||||||||||||
230 | idx = sk_X509_POLICY_DATA_find(cache->data, &tmp); | - | ||||||||||||
231 | return never executed: sk_X509_POLICY_DATA_value(cache->data, idx);return sk_X509_POLICY_DATA_value(cache->data, idx); never executed: return sk_X509_POLICY_DATA_value(cache->data, idx); | 0 | ||||||||||||
232 | } | - | ||||||||||||
233 | - | |||||||||||||
234 | static int policy_data_cmp(const X509_POLICY_DATA *const *a, | - | ||||||||||||
235 | const X509_POLICY_DATA *const *b) | - | ||||||||||||
236 | { | - | ||||||||||||
237 | return never executed: OBJ_cmp((*a)->valid_policy, (*b)->valid_policy);return OBJ_cmp((*a)->valid_policy, (*b)->valid_policy); never executed: return OBJ_cmp((*a)->valid_policy, (*b)->valid_policy); | 0 | ||||||||||||
238 | } | - | ||||||||||||
239 | - | |||||||||||||
240 | static int policy_cache_set_int(long *out, ASN1_INTEGER *value) | - | ||||||||||||
241 | { | - | ||||||||||||
242 | if (value ==
| 0 | ||||||||||||
243 | ((void *)0)
| 0 | ||||||||||||
244 | ) | - | ||||||||||||
245 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
246 | if (value->type == (2 | 0x100)
| 0 | ||||||||||||
247 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
248 | *out = ASN1_INTEGER_get(value); | - | ||||||||||||
249 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
250 | } | - | ||||||||||||
Switch to Source code | Preprocessed file |