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