Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | | - |
6 | | - |
7 | | - |
8 | typedef struct lookup_dir_hashes_st { | - |
9 | unsigned long hash; | - |
10 | int suffix; | - |
11 | } BY_DIR_HASH; | - |
12 | | - |
13 | typedef struct lookup_dir_entry_st { | - |
14 | char *dir; | - |
15 | int dir_type; | - |
16 | struct stack_st_BY_DIR_HASH *hashes; | - |
17 | } BY_DIR_ENTRY; | - |
18 | | - |
19 | typedef struct lookup_dir_st { | - |
20 | BUF_MEM *buffer; | - |
21 | struct stack_st_BY_DIR_ENTRY *dirs; | - |
22 | } BY_DIR; | - |
23 | | - |
24 | struct stack_st_BY_DIR_HASH { _STACK stack; }; | - |
25 | struct stack_st_BY_DIR_ENTRY { _STACK stack; }; | - |
26 | | - |
27 | static int dir_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl, | - |
28 | char **ret); | - |
29 | static int new_dir(X509_LOOKUP *lu); | - |
30 | static void free_dir(X509_LOOKUP *lu); | - |
31 | static int add_cert_dir(BY_DIR *ctx, const char *dir, int type); | - |
32 | static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name, | - |
33 | X509_OBJECT *ret); | - |
34 | | - |
35 | static X509_LOOKUP_METHOD x509_dir_lookup = { | - |
36 | .name = "Load certs from files in a directory", | - |
37 | .new_item = new_dir, | - |
38 | .free = free_dir, | - |
39 | .init = | - |
40 | ((void *)0) | - |
41 | , | - |
42 | .shutdown = | - |
43 | ((void *)0) | - |
44 | , | - |
45 | .ctrl = dir_ctrl, | - |
46 | .get_by_subject = get_cert_by_subject, | - |
47 | .get_by_issuer_serial = | - |
48 | ((void *)0) | - |
49 | , | - |
50 | .get_by_fingerprint = | - |
51 | ((void *)0) | - |
52 | , | - |
53 | .get_by_alias = | - |
54 | ((void *)0) | - |
55 | , | - |
56 | }; | - |
57 | | - |
58 | X509_LOOKUP_METHOD * | - |
59 | X509_LOOKUP_hash_dir(void) | - |
60 | { | - |
61 | returnexecuted 23 times by 2 tests: return (&x509_dir_lookup); Executed by:- libcrypto.so.44.0.1
- ssltest
(&x509_dir_lookup);executed 23 times by 2 tests: return (&x509_dir_lookup); Executed by:- libcrypto.so.44.0.1
- ssltest
| 23 |
62 | } | - |
63 | | - |
64 | static int | - |
65 | dir_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl, | - |
66 | char **retp) | - |
67 | { | - |
68 | int ret = 0; | - |
69 | BY_DIR *ld; | - |
70 | | - |
71 | ld = (BY_DIR *)ctx->method_data; | - |
72 | | - |
73 | switch (cmd) { | - |
74 | caseexecuted 23 times by 2 tests: case 2: Executed by:- libcrypto.so.44.0.1
- ssltest
2:executed 23 times by 2 tests: case 2: Executed by:- libcrypto.so.44.0.1
- ssltest
| 23 |
75 | if (argl == 3TRUE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
| FALSE | never evaluated |
) { | 0-23 |
76 | ret = add_cert_dir(ld, X509_get_default_cert_dir(), | - |
77 | 1); | - |
78 | if (!retTRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
) { | 0-23 |
79 | ERR_put_error(11,(0xfff),(103),__FILE__,136); | - |
80 | } never executed: end of block | 0 |
81 | }executed 23 times by 2 tests: end of block Executed by:- libcrypto.so.44.0.1
- ssltest
else | 23 |
82 | ret = add_cert_dir(ld, argp, (int)argl); never executed: ret = add_cert_dir(ld, argp, (int)argl); | 0 |
83 | break;executed 23 times by 2 tests: break; Executed by:- libcrypto.so.44.0.1
- ssltest
| 23 |
84 | } | - |
85 | returnexecuted 23 times by 2 tests: return (ret); Executed by:- libcrypto.so.44.0.1
- ssltest
(ret);executed 23 times by 2 tests: return (ret); Executed by:- libcrypto.so.44.0.1
- ssltest
| 23 |
86 | } | - |
87 | | - |
88 | static int | - |
89 | new_dir(X509_LOOKUP *lu) | - |
90 | { | - |
91 | BY_DIR *a; | - |
92 | | - |
93 | if ((TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
a = malloc(sizeof(BY_DIR))) == TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
| 0-23 |
94 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
| 0-23 |
95 | ) | - |
96 | return never executed: return (0); (0);never executed: return (0); | 0 |
97 | if ((TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
a->buffer = BUF_MEM_new()) == TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
| 0-23 |
98 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
| 0-23 |
99 | ) { | - |
100 | free(a); | - |
101 | return never executed: return (0); (0);never executed: return (0); | 0 |
102 | } | - |
103 | a->dirs = | - |
104 | ((void *)0) | - |
105 | ; | - |
106 | lu->method_data = (char *)a; | - |
107 | returnexecuted 23 times by 2 tests: return (1); Executed by:- libcrypto.so.44.0.1
- ssltest
(1);executed 23 times by 2 tests: return (1); Executed by:- libcrypto.so.44.0.1
- ssltest
| 23 |
108 | } | - |
109 | | - |
110 | static void | - |
111 | by_dir_hash_free(BY_DIR_HASH *hash) | - |
112 | { | - |
113 | free(hash); | - |
114 | } never executed: end of block | 0 |
115 | | - |
116 | static int | - |
117 | by_dir_hash_cmp(const BY_DIR_HASH * const *a, | - |
118 | const BY_DIR_HASH * const *b) | - |
119 | { | - |
120 | if ((*TRUE | never evaluated | FALSE | never evaluated |
a)->hash > (*b)->hashTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
121 | return never executed: return 1; 1;never executed: return 1; | 0 |
122 | if ((*TRUE | never evaluated | FALSE | never evaluated |
a)->hash < (*b)->hashTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
123 | return never executed: return -1; -1;never executed: return -1; | 0 |
124 | return never executed: return 0; 0;never executed: return 0; | 0 |
125 | } | - |
126 | | - |
127 | static void | - |
128 | by_dir_entry_free(BY_DIR_ENTRY *ent) | - |
129 | { | - |
130 | free(ent->dir); | - |
131 | if (ent->hashesTRUE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
| FALSE | never evaluated |
) | 0-23 |
132 | sk_pop_free(((_STACK*) (1 ? (ent->hashes) : (struct stack_st_BY_DIR_HASH*)0)), ((void (*)(void *)) ((1 ? (by_dir_hash_free) : (void (*)(BY_DIR_HASH *))0))));executed 23 times by 2 tests: sk_pop_free(((_STACK*) (1 ? (ent->hashes) : (struct stack_st_BY_DIR_HASH*)0)), ((void (*)(void *)) ((1 ? (by_dir_hash_free) : (void (*)(BY_DIR_HASH *))0)))); Executed by:- libcrypto.so.44.0.1
- ssltest
| 23 |
133 | free(ent); | - |
134 | }executed 23 times by 2 tests: end of block Executed by:- libcrypto.so.44.0.1
- ssltest
| 23 |
135 | | - |
136 | static void | - |
137 | free_dir(X509_LOOKUP *lu) | - |
138 | { | - |
139 | BY_DIR *a; | - |
140 | | - |
141 | a = (BY_DIR *)lu->method_data; | - |
142 | if (a->dirs != TRUE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
| FALSE | never evaluated |
| 0-23 |
143 | ((void *)0)TRUE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
| FALSE | never evaluated |
| 0-23 |
144 | ) | - |
145 | sk_pop_free(((_STACK*) (1 ? (a->dirs) : (struct stack_st_BY_DIR_ENTRY*)0)), ((void (*)(void *)) ((1 ? (by_dir_entry_free) : (void (*)(BY_DIR_ENTRY *))0))));executed 23 times by 2 tests: sk_pop_free(((_STACK*) (1 ? (a->dirs) : (struct stack_st_BY_DIR_ENTRY*)0)), ((void (*)(void *)) ((1 ? (by_dir_entry_free) : (void (*)(BY_DIR_ENTRY *))0)))); Executed by:- libcrypto.so.44.0.1
- ssltest
| 23 |
146 | if (a->buffer != TRUE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
| FALSE | never evaluated |
| 0-23 |
147 | ((void *)0)TRUE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
| FALSE | never evaluated |
| 0-23 |
148 | ) | - |
149 | BUF_MEM_free(a->buffer);executed 23 times by 2 tests: BUF_MEM_free(a->buffer); Executed by:- libcrypto.so.44.0.1
- ssltest
| 23 |
150 | free(a); | - |
151 | }executed 23 times by 2 tests: end of block Executed by:- libcrypto.so.44.0.1
- ssltest
| 23 |
152 | | - |
153 | static int | - |
154 | add_cert_dir(BY_DIR *ctx, const char *dir, int type) | - |
155 | { | - |
156 | int j; | - |
157 | const char *s, *ss, *p; | - |
158 | ptrdiff_t len; | - |
159 | | - |
160 | if (dir == TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
| 0-23 |
161 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
| 0-23 |
162 | || !*dirTRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
) { | 0-23 |
163 | ERR_put_error(11,(0xfff),(113),__FILE__,208); | - |
164 | return never executed: return 0; 0;never executed: return 0; | 0 |
165 | } | - |
166 | | - |
167 | s = dir; | - |
168 | p = s; | - |
169 | do { | - |
170 | if ((*TRUE | never evaluated | FALSE | evaluated 575 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
p == ':')TRUE | never evaluated | FALSE | evaluated 575 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
|| (*TRUE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
| FALSE | evaluated 552 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
p == '\0')TRUE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
| FALSE | evaluated 552 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
) { | 0-575 |
171 | BY_DIR_ENTRY *ent; | - |
172 | ss = s; | - |
173 | s = p + 1; | - |
174 | len = p - ss; | - |
175 | if (len == 0TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
) | 0-23 |
176 | continue; never executed: continue; | 0 |
177 | for (j = 0; j < sk_num(((_STACK*) (1 ? (ctx->dirs) : (struct stack_st_BY_DIR_ENTRY*)0)))TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
; j++) { | 0-23 |
178 | ent = ((BY_DIR_ENTRY *)sk_value(((_STACK*) (1 ? (ctx->dirs) : (struct stack_st_BY_DIR_ENTRY*)0)), (j))); | - |
179 | if (strlen(ent->dir) == (size_t)lenTRUE | never evaluated | FALSE | never evaluated |
&& | 0 |
180 | | - |
181 | (TRUE | never evaluated | FALSE | never evaluated |
__extension__ (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
182 | (size_t)lenTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
183 | )TRUE | never evaluated | FALSE | never evaluated |
&& ((__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
184 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
185 | )TRUE | never evaluated | FALSE | never evaluated |
&& strlen (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
186 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
187 | ) < ((size_t) (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
188 | (size_t)lenTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
189 | ))TRUE | never evaluated | FALSE | never evaluated |
) || (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
190 | ssTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
191 | )TRUE | never evaluated | FALSE | never evaluated |
&& strlen (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
192 | ssTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
193 | ) < ((size_t) (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
194 | (size_t)lenTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
195 | ))TRUE | never evaluated | FALSE | never evaluated |
)) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
196 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
197 | ) && __builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
198 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
199 | ) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
200 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
201 | ), __s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
202 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
203 | ), (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
204 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
205 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
206 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
207 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
208 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
209 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
210 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
211 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
212 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
213 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
214 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
215 | ) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
216 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
217 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
218 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
219 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
220 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
221 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
222 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
223 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
224 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
225 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
226 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
227 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
228 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
229 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
230 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
231 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
232 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
233 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
234 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
235 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
236 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
237 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
238 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
239 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
240 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
241 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( ent->dir ))[3] - __s2[3]); | 0 |
242 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( ent->dir ))[3] - __s2[3]); | 0 |
243 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
244 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
245 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
246 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
247 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
248 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
249 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
250 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
251 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
252 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
253 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
254 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
255 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
256 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
257 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
258 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
259 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
260 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
261 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
262 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
263 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
264 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
265 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
266 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
267 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
268 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
269 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( ss ))[3] - __s2[3]); | 0 |
270 | ssTRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( ss ))[3] - __s2[3]); | 0 |
271 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
272 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
273 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
274 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
275 | )))); }) : strncmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
276 | ent->dirTRUE | never evaluated | FALSE | never evaluated |
| 0 |
277 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
278 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
279 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
280 | (size_t)lenTRUE | never evaluated | FALSE | never evaluated |
| 0 |
281 | ))) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
282 | == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
283 | break; never executed: break; | 0 |
284 | } never executed: end of block | 0 |
285 | if (j < sk_num(((_STACK*) (1 ? (ctx->dirs) : (struct stack_st_BY_DIR_ENTRY*)0)))TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
) | 0-23 |
286 | continue; never executed: continue; | 0 |
287 | if (ctx->dirs == TRUE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
| FALSE | never evaluated |
| 0-23 |
288 | ((void *)0)TRUE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
| FALSE | never evaluated |
| 0-23 |
289 | ) { | - |
290 | ctx->dirs = ((struct stack_st_BY_DIR_ENTRY *)sk_new_null()); | - |
291 | if (!ctx->dirsTRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
) { | 0-23 |
292 | ERR_put_error(11,(0xfff),((1|64)),__FILE__,233); | - |
293 | return never executed: return 0; 0;never executed: return 0; | 0 |
294 | } | - |
295 | }executed 23 times by 2 tests: end of block Executed by:- libcrypto.so.44.0.1
- ssltest
| 23 |
296 | ent = malloc(sizeof(BY_DIR_ENTRY)); | - |
297 | if (!entTRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
) { | 0-23 |
298 | ERR_put_error(11,(0xfff),((1|64)),__FILE__,239); | - |
299 | return never executed: return 0; 0;never executed: return 0; | 0 |
300 | } | - |
301 | ent->dir_type = type; | - |
302 | ent->hashes = ((struct stack_st_BY_DIR_HASH *)sk_new(((int (*)(const void *, const void *)) ((1 ? (by_dir_hash_cmp) : (int (*)(const BY_DIR_HASH * const *, const BY_DIR_HASH * const *))0))))); | - |
303 | ent->dir = | - |
304 | (__extension__ (__builtin_constant_p (TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
| 0-23 |
305 | ssTRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
| 0-23 |
306 | )TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
&& ((TRUE | never evaluated | FALSE | never evaluated |
size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0-23 |
307 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
308 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
309 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
310 | ) == 1)TRUE | never evaluated | FALSE | never evaluated |
? (((constTRUE | never evaluated | FALSE | never evaluated |
char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
311 | ssTRUE | never evaluated | FALSE | never evaluated |
| 0 |
312 | ))[0] == '\0'TRUE | never evaluated | FALSE | never evaluated |
? (char *) calloc ((size_t) 1, (size_t) 1) : ({ size_t __len = strlen ( | 0 |
313 | ss | - |
314 | ) + 1; size_t __n = ( | - |
315 | (size_t)len | - |
316 | ); char *__retval; if (__n < __lenTRUE | never evaluated | FALSE | never evaluated |
) __len = __n + 1;never executed: __len = __n + 1; __retval = (char *) malloc (__len); if (__retval != ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
) { __retval[__len - 1] = '\0'; __retval = (char *) memcpy (__retval, | 0 |
317 | ss | - |
318 | , __len - 1); } never executed: end of block __retval; })) : __strndup ( | 0 |
319 | ss | - |
320 | , | - |
321 | (size_t)len | - |
322 | ))) | - |
323 | ; | - |
324 | if (!ent->dirTRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
|| !ent->hashesTRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
) { | 0-23 |
325 | ERR_put_error(11,(0xfff),((1|64)),__FILE__,246); | - |
326 | by_dir_entry_free(ent); | - |
327 | return never executed: return 0; 0;never executed: return 0; | 0 |
328 | } | - |
329 | if (!sk_push(((_STACK*) (1 ? (ctx->dirs) : (struct stack_st_BY_DIR_ENTRY*)0)), ((void*) (1 ? (ent) : (BY_DIR_ENTRY*)0)))TRUE | never evaluated | FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
) { | 0-23 |
330 | ERR_put_error(11,(0xfff),((1|64)),__FILE__,251); | - |
331 | by_dir_entry_free(ent); | - |
332 | return never executed: return 0; 0;never executed: return 0; | 0 |
333 | } | - |
334 | }executed 23 times by 2 tests: end of block Executed by:- libcrypto.so.44.0.1
- ssltest
| 23 |
335 | }executed 575 times by 2 tests: end of block Executed by:- libcrypto.so.44.0.1
- ssltest
while (*TRUE | evaluated 552 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
| FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
p++ != '\0'TRUE | evaluated 552 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
| FALSE | evaluated 23 times by 2 testsEvaluated by:- libcrypto.so.44.0.1
- ssltest
|
); | 23-575 |
336 | returnexecuted 23 times by 2 tests: return 1; Executed by:- libcrypto.so.44.0.1
- ssltest
1;executed 23 times by 2 tests: return 1; Executed by:- libcrypto.so.44.0.1
- ssltest
| 23 |
337 | } | - |
338 | | - |
339 | static int | - |
340 | get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name, | - |
341 | X509_OBJECT *ret) | - |
342 | { | - |
343 | BY_DIR *ctx; | - |
344 | union { | - |
345 | struct { | - |
346 | X509 st_x509; | - |
347 | X509_CINF st_x509_cinf; | - |
348 | } x509; | - |
349 | struct { | - |
350 | X509_CRL st_crl; | - |
351 | X509_CRL_INFO st_crl_info; | - |
352 | } crl; | - |
353 | } data; | - |
354 | int ok = 0; | - |
355 | int i, j, k; | - |
356 | unsigned long h; | - |
357 | BUF_MEM *b = | - |
358 | ((void *)0) | - |
359 | ; | - |
360 | X509_OBJECT stmp, *tmp; | - |
361 | const char *postfix=""; | - |
362 | | - |
363 | if (name == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
364 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
365 | ) | - |
366 | return never executed: return (0); (0);never executed: return (0); | 0 |
367 | | - |
368 | stmp.type = type; | - |
369 | if (type == 1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
370 | data.x509.st_x509.cert_info = &data.x509.st_x509_cinf; | - |
371 | data.x509.st_x509_cinf.subject = name; | - |
372 | stmp.data.x509 = &data.x509.st_x509; | - |
373 | postfix=""; | - |
374 | } never executed: end of block else if (type == 2TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
375 | data.crl.st_crl.crl = &data.crl.st_crl_info; | - |
376 | data.crl.st_crl_info.issuer = name; | - |
377 | stmp.data.crl = &data.crl.st_crl; | - |
378 | postfix="r"; | - |
379 | } never executed: end of block else { | 0 |
380 | ERR_put_error(11,(0xfff),(112),__FILE__,297); | - |
381 | goto never executed: goto finish; finish;never executed: goto finish; | 0 |
382 | } | - |
383 | | - |
384 | if ((TRUE | never evaluated | FALSE | never evaluated |
b = BUF_MEM_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
385 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
386 | ) { | - |
387 | ERR_put_error(11,(0xfff),(7),__FILE__,302); | - |
388 | goto never executed: goto finish; finish;never executed: goto finish; | 0 |
389 | } | - |
390 | | - |
391 | ctx = (BY_DIR *)xl->method_data; | - |
392 | | - |
393 | h = X509_NAME_hash(name); | - |
394 | for (i = 0; i < sk_num(((_STACK*) (1 ? (ctx->dirs) : (struct stack_st_BY_DIR_ENTRY*)0)))TRUE | never evaluated | FALSE | never evaluated |
; i++) { | 0 |
395 | BY_DIR_ENTRY *ent; | - |
396 | int idx; | - |
397 | BY_DIR_HASH htmp, *hent; | - |
398 | ent = ((BY_DIR_ENTRY *)sk_value(((_STACK*) (1 ? (ctx->dirs) : (struct stack_st_BY_DIR_ENTRY*)0)), (i))); | - |
399 | j = strlen(ent->dir) + 1 + 8 + 6 + 1 + 1; | - |
400 | if (!BUF_MEM_grow(b, j)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
401 | ERR_put_error(11,(0xfff),((1|64)),__FILE__,316); | - |
402 | goto never executed: goto finish; finish;never executed: goto finish; | 0 |
403 | } | - |
404 | if (type == 2TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
405 | htmp.hash = h; | - |
406 | CRYPTO_lock(1|4,11,__FILE__,321); | - |
407 | idx = sk_find(((_STACK*) (1 ? (ent->hashes) : (struct stack_st_BY_DIR_HASH*)0)), ((void*) (1 ? (&htmp) : (BY_DIR_HASH*)0))); | - |
408 | if (idx >= 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
409 | hent = ((BY_DIR_HASH *)sk_value(((_STACK*) (1 ? (ent->hashes) : (struct stack_st_BY_DIR_HASH*)0)), (idx))); | - |
410 | k = hent->suffix; | - |
411 | } never executed: end of block else { | 0 |
412 | hent = | - |
413 | ((void *)0) | - |
414 | ; | - |
415 | k = 0; | - |
416 | } never executed: end of block | 0 |
417 | CRYPTO_lock(2|4,11,__FILE__,330); | - |
418 | } never executed: end of block else { | 0 |
419 | k = 0; | - |
420 | hent = | - |
421 | ((void *)0) | - |
422 | ; | - |
423 | } never executed: end of block | 0 |
424 | for (;;) { | - |
425 | (void) snprintf(b->data, b->max, "%s/%08lx.%s%d", | - |
426 | ent->dir, h, postfix, k); | - |
427 | | - |
428 | { | - |
429 | struct stat st; | - |
430 | if (stat(b->data, &st) < 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
431 | break; never executed: break; | 0 |
432 | } | - |
433 | | - |
434 | if (type == 1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
435 | if ((TRUE | never evaluated | FALSE | never evaluated |
X509_load_cert_file(xl, b->data,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
436 | ent->dir_type)) == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
437 | break; never executed: break; | 0 |
438 | } never executed: end of block else if (type == 2TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
439 | if ((TRUE | never evaluated | FALSE | never evaluated |
X509_load_crl_file(xl, b->data,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
440 | ent->dir_type)) == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
441 | break; never executed: break; | 0 |
442 | } never executed: end of block | 0 |
443 | | - |
444 | k++; | - |
445 | } never executed: end of block | 0 |
446 | | - |
447 | | - |
448 | CRYPTO_lock(1|8,11,__FILE__,359); | - |
449 | j = sk_find(((_STACK*) (1 ? (xl->store_ctx->objs) : (struct stack_st_X509_OBJECT*)0)), ((void*) (1 ? (&stmp) : (X509_OBJECT*)0))); | - |
450 | if (j != -1TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
451 | tmp = ((X509_OBJECT *)sk_value(((_STACK*) (1 ? (xl->store_ctx->objs) : (struct stack_st_X509_OBJECT*)0)), (j))); never executed: tmp = ((X509_OBJECT *)sk_value(((_STACK*) (1 ? (xl->store_ctx->objs) : (struct stack_st_X509_OBJECT*)0)), (j))); | 0 |
452 | else | - |
453 | tmp = never executed: tmp = ((void *)0) ; | 0 |
454 | ((void *)0) never executed: tmp = ((void *)0) ; | 0 |
455 | ; never executed: tmp = ((void *)0) ; | 0 |
456 | CRYPTO_lock(2|8,11,__FILE__,365); | - |
457 | | - |
458 | | - |
459 | if (type == 2TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
460 | CRYPTO_lock(1|8,11,__FILE__,369); | - |
461 | | - |
462 | | - |
463 | | - |
464 | | - |
465 | if (!hentTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
466 | htmp.hash = h; | - |
467 | idx = sk_find(((_STACK*) (1 ? (ent->hashes) : (struct stack_st_BY_DIR_HASH*)0)), ((void*) (1 ? (&htmp) : (BY_DIR_HASH*)0))); | - |
468 | if (idx >= 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
469 | hent = ((BY_DIR_HASH *)sk_value(((_STACK*) (1 ? (ent->hashes) : (struct stack_st_BY_DIR_HASH*)0)), (idx))) never executed: hent = ((BY_DIR_HASH *)sk_value(((_STACK*) (1 ? (ent->hashes) : (struct stack_st_BY_DIR_HASH*)0)), (idx))) ; | 0 |
470 | ; never executed: hent = ((BY_DIR_HASH *)sk_value(((_STACK*) (1 ? (ent->hashes) : (struct stack_st_BY_DIR_HASH*)0)), (idx))) ; | 0 |
471 | } never executed: end of block | 0 |
472 | if (!hentTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
473 | hent = malloc(sizeof(BY_DIR_HASH)); | - |
474 | if (!hentTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
475 | ERR_put_error(11,(0xfff),((1|64)),__FILE__,384); | - |
476 | CRYPTO_lock(2|8,11,__FILE__,385); | - |
477 | ok = 0; | - |
478 | goto never executed: goto finish; finish;never executed: goto finish; | 0 |
479 | } | - |
480 | hent->hash = h; | - |
481 | hent->suffix = k; | - |
482 | if (!sk_push(((_STACK*) (1 ? (ent->hashes) : (struct stack_st_BY_DIR_HASH*)0)), ((void*) (1 ? (hent) : (BY_DIR_HASH*)0)))TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
483 | ERR_put_error(11,(0xfff),((1|64)),__FILE__,392); | - |
484 | CRYPTO_lock(2|8,11,__FILE__,393); | - |
485 | free(hent); | - |
486 | ok = 0; | - |
487 | goto never executed: goto finish; finish;never executed: goto finish; | 0 |
488 | } | - |
489 | } never executed: end of block else if (hent->suffix < kTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
490 | hent->suffix = k; never executed: hent->suffix = k; | 0 |
491 | | - |
492 | CRYPTO_lock(2|8,11,__FILE__,401); | - |
493 | | - |
494 | } never executed: end of block | 0 |
495 | | - |
496 | if (tmp != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
497 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
498 | ) { | - |
499 | ok = 1; | - |
500 | ret->type = tmp->type; | - |
501 | memcpy(&ret->data, &tmp->data, sizeof(ret->data)); | - |
502 | | - |
503 | | - |
504 | | - |
505 | | - |
506 | | - |
507 | | - |
508 | goto never executed: goto finish; finish;never executed: goto finish; | 0 |
509 | } | - |
510 | } never executed: end of block | 0 |
511 | finish: code before this statement never executed: finish: | 0 |
512 | if (b != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
513 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
514 | ) | - |
515 | BUF_MEM_free(b); never executed: BUF_MEM_free(b); | 0 |
516 | return never executed: return (ok); (ok);never executed: return (ok); | 0 |
517 | } | - |
| | |