Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/cryptlib.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||
2 | - | |||||||||||||||||||||||||
3 | - | |||||||||||||||||||||||||
4 | - | |||||||||||||||||||||||||
5 | struct stack_st_CRYPTO_dynlock { _STACK stack; }; | - | ||||||||||||||||||||||||
6 | - | |||||||||||||||||||||||||
7 | - | |||||||||||||||||||||||||
8 | static const char* const lock_names[41] = { | - | ||||||||||||||||||||||||
9 | "<<ERROR>>", | - | ||||||||||||||||||||||||
10 | "err", | - | ||||||||||||||||||||||||
11 | "ex_data", | - | ||||||||||||||||||||||||
12 | "x509", | - | ||||||||||||||||||||||||
13 | "x509_info", | - | ||||||||||||||||||||||||
14 | "x509_pkey", | - | ||||||||||||||||||||||||
15 | "x509_crl", | - | ||||||||||||||||||||||||
16 | "x509_req", | - | ||||||||||||||||||||||||
17 | "dsa", | - | ||||||||||||||||||||||||
18 | "rsa", | - | ||||||||||||||||||||||||
19 | "evp_pkey", | - | ||||||||||||||||||||||||
20 | "x509_store", | - | ||||||||||||||||||||||||
21 | "ssl_ctx", | - | ||||||||||||||||||||||||
22 | "ssl_cert", | - | ||||||||||||||||||||||||
23 | "ssl_session", | - | ||||||||||||||||||||||||
24 | "ssl_sess_cert", | - | ||||||||||||||||||||||||
25 | "ssl", | - | ||||||||||||||||||||||||
26 | "ssl_method", | - | ||||||||||||||||||||||||
27 | "rand", | - | ||||||||||||||||||||||||
28 | "rand2", | - | ||||||||||||||||||||||||
29 | "debug_malloc", | - | ||||||||||||||||||||||||
30 | "BIO", | - | ||||||||||||||||||||||||
31 | "gethostbyname", | - | ||||||||||||||||||||||||
32 | "getservbyname", | - | ||||||||||||||||||||||||
33 | "readdir", | - | ||||||||||||||||||||||||
34 | "RSA_blinding", | - | ||||||||||||||||||||||||
35 | "dh", | - | ||||||||||||||||||||||||
36 | "debug_malloc2", | - | ||||||||||||||||||||||||
37 | "dso", | - | ||||||||||||||||||||||||
38 | "dynlock", | - | ||||||||||||||||||||||||
39 | "engine", | - | ||||||||||||||||||||||||
40 | "ui", | - | ||||||||||||||||||||||||
41 | "ecdsa", | - | ||||||||||||||||||||||||
42 | "ec", | - | ||||||||||||||||||||||||
43 | "ecdh", | - | ||||||||||||||||||||||||
44 | "bn", | - | ||||||||||||||||||||||||
45 | "ec_pre_comp", | - | ||||||||||||||||||||||||
46 | "store", | - | ||||||||||||||||||||||||
47 | "comp", | - | ||||||||||||||||||||||||
48 | "fips", | - | ||||||||||||||||||||||||
49 | "fips2", | - | ||||||||||||||||||||||||
50 | - | |||||||||||||||||||||||||
51 | - | |||||||||||||||||||||||||
52 | - | |||||||||||||||||||||||||
53 | }; | - | ||||||||||||||||||||||||
54 | - | |||||||||||||||||||||||||
55 | - | |||||||||||||||||||||||||
56 | - | |||||||||||||||||||||||||
57 | static struct stack_st_OPENSSL_STRING *app_locks = | - | ||||||||||||||||||||||||
58 | ((void *)0) | - | ||||||||||||||||||||||||
59 | ; | - | ||||||||||||||||||||||||
60 | - | |||||||||||||||||||||||||
61 | - | |||||||||||||||||||||||||
62 | - | |||||||||||||||||||||||||
63 | - | |||||||||||||||||||||||||
64 | static struct stack_st_CRYPTO_dynlock *dyn_locks = | - | ||||||||||||||||||||||||
65 | ((void *)0) | - | ||||||||||||||||||||||||
66 | ; | - | ||||||||||||||||||||||||
67 | - | |||||||||||||||||||||||||
68 | static void (*locking_callback)(int mode, int type, | - | ||||||||||||||||||||||||
69 | const char *file, int line) = 0; | - | ||||||||||||||||||||||||
70 | static int (*add_lock_callback)(int *pointer, int amount, | - | ||||||||||||||||||||||||
71 | int type, const char *file, int line) = 0; | - | ||||||||||||||||||||||||
72 | - | |||||||||||||||||||||||||
73 | static unsigned long (*id_callback)(void) = 0; | - | ||||||||||||||||||||||||
74 | - | |||||||||||||||||||||||||
75 | static void (*threadid_callback)(CRYPTO_THREADID *) = 0; | - | ||||||||||||||||||||||||
76 | static struct CRYPTO_dynlock_value *(*dynlock_create_callback)( | - | ||||||||||||||||||||||||
77 | const char *file, int line) = 0; | - | ||||||||||||||||||||||||
78 | static void (*dynlock_lock_callback)(int mode, | - | ||||||||||||||||||||||||
79 | struct CRYPTO_dynlock_value *l, const char *file, int line) = 0; | - | ||||||||||||||||||||||||
80 | static void (*dynlock_destroy_callback)(struct CRYPTO_dynlock_value *l, | - | ||||||||||||||||||||||||
81 | const char *file, int line) = 0; | - | ||||||||||||||||||||||||
82 | - | |||||||||||||||||||||||||
83 | int | - | ||||||||||||||||||||||||
84 | CRYPTO_get_new_lockid(char *name) | - | ||||||||||||||||||||||||
85 | { | - | ||||||||||||||||||||||||
86 | char *str; | - | ||||||||||||||||||||||||
87 | int i; | - | ||||||||||||||||||||||||
88 | - | |||||||||||||||||||||||||
89 | if ((
| 0 | ||||||||||||||||||||||||
90 | ((void *)0)
| 0 | ||||||||||||||||||||||||
91 | )
| 0 | ||||||||||||||||||||||||
92 | ((
| 0 | ||||||||||||||||||||||||
93 | ((void *)0)
| 0 | ||||||||||||||||||||||||
94 | )
| 0 | ||||||||||||||||||||||||
95 | ERR_put_error(15,(0xfff),((1|64)),__FILE__,213); | - | ||||||||||||||||||||||||
96 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
97 | } | - | ||||||||||||||||||||||||
98 | if (name ==
| 0 | ||||||||||||||||||||||||
99 | ((void *)0)
| 0 | ||||||||||||||||||||||||
100 | || (
| 0 | ||||||||||||||||||||||||
101 | (__extension__ (__builtin_constant_p (
| 0 | ||||||||||||||||||||||||
102 | name
| 0 | ||||||||||||||||||||||||
103 | )
| 0 | ||||||||||||||||||||||||
104 | name
| 0 | ||||||||||||||||||||||||
105 | ) + 1) - (size_t)(const void *)(
| 0 | ||||||||||||||||||||||||
106 | name
| 0 | ||||||||||||||||||||||||
107 | ) == 1)
| 0 | ||||||||||||||||||||||||
108 | name
| 0 | ||||||||||||||||||||||||
109 | ))[0] == '\0' ? (char *) calloc ((size_t) 1, (size_t) 1) : ({ size_t __len = strlen (
| 0 | ||||||||||||||||||||||||
110 | name
| 0 | ||||||||||||||||||||||||
111 | ) + 1; char *__retval = (char *) malloc (__len); if (__retval != ((void *)0)) __retval = (char *) memcpy (__retval, never executed: __retval = (char *) memcpy (__retval, name , __len); | 0 | ||||||||||||||||||||||||
112 | name
never executed: __retval = (char *) memcpy (__retval, name , __len); | 0 | ||||||||||||||||||||||||
113 | , __len); __retval; })) : __strdup (
| 0 | ||||||||||||||||||||||||
114 | name
| 0 | ||||||||||||||||||||||||
115 | )))
| 0 | ||||||||||||||||||||||||
116 | ) ==
| 0 | ||||||||||||||||||||||||
117 | ((void *)0)
| 0 | ||||||||||||||||||||||||
118 | ) { | - | ||||||||||||||||||||||||
119 | ERR_put_error(15,(0xfff),((1|64)),__FILE__,217); | - | ||||||||||||||||||||||||
120 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
121 | } | - | ||||||||||||||||||||||||
122 | i = sk_push(((_STACK*) (1 ? app_locks : (struct stack_st_OPENSSL_STRING*)0)), ((void*) (1 ? str : (char*)0))); | - | ||||||||||||||||||||||||
123 | if (!i
| 0 | ||||||||||||||||||||||||
124 | free(str); never executed: free(str); | 0 | ||||||||||||||||||||||||
125 | else | - | ||||||||||||||||||||||||
126 | i += 41; never executed: i += 41; | 0 | ||||||||||||||||||||||||
127 | return never executed: (i);return (i); never executed: return (i); | 0 | ||||||||||||||||||||||||
128 | } | - | ||||||||||||||||||||||||
129 | - | |||||||||||||||||||||||||
130 | int | - | ||||||||||||||||||||||||
131 | CRYPTO_num_locks(void) | - | ||||||||||||||||||||||||
132 | { | - | ||||||||||||||||||||||||
133 | return never executed: 41;return 41; never executed: return 41; | 0 | ||||||||||||||||||||||||
134 | } | - | ||||||||||||||||||||||||
135 | - | |||||||||||||||||||||||||
136 | int | - | ||||||||||||||||||||||||
137 | CRYPTO_get_new_dynlockid(void) | - | ||||||||||||||||||||||||
138 | { | - | ||||||||||||||||||||||||
139 | int i = 0; | - | ||||||||||||||||||||||||
140 | CRYPTO_dynlock *pointer = | - | ||||||||||||||||||||||||
141 | ((void *)0) | - | ||||||||||||||||||||||||
142 | ; | - | ||||||||||||||||||||||||
143 | - | |||||||||||||||||||||||||
144 | if (dynlock_create_callback ==
| 0 | ||||||||||||||||||||||||
145 | ((void *)0)
| 0 | ||||||||||||||||||||||||
146 | ) { | - | ||||||||||||||||||||||||
147 | ERR_put_error(15,(0xfff),(100),__FILE__,241); | - | ||||||||||||||||||||||||
148 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
149 | } | - | ||||||||||||||||||||||||
150 | CRYPTO_lock(1|8,29,__FILE__,244); | - | ||||||||||||||||||||||||
151 | if ((
| 0 | ||||||||||||||||||||||||
152 | ((void *)0)
| 0 | ||||||||||||||||||||||||
153 | )
| 0 | ||||||||||||||||||||||||
154 | ((
| 0 | ||||||||||||||||||||||||
155 | ((void *)0)
| 0 | ||||||||||||||||||||||||
156 | )
| 0 | ||||||||||||||||||||||||
157 | CRYPTO_lock(2|8,29,__FILE__,247); | - | ||||||||||||||||||||||||
158 | ERR_put_error(15,(0xfff),((1|64)),__FILE__,248); | - | ||||||||||||||||||||||||
159 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
160 | } | - | ||||||||||||||||||||||||
161 | CRYPTO_lock(2|8,29,__FILE__,251); | - | ||||||||||||||||||||||||
162 | - | |||||||||||||||||||||||||
163 | pointer = malloc(sizeof(CRYPTO_dynlock)); | - | ||||||||||||||||||||||||
164 | if (pointer ==
| 0 | ||||||||||||||||||||||||
165 | ((void *)0)
| 0 | ||||||||||||||||||||||||
166 | ) { | - | ||||||||||||||||||||||||
167 | ERR_put_error(15,(0xfff),((1|64)),__FILE__,255); | - | ||||||||||||||||||||||||
168 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
169 | } | - | ||||||||||||||||||||||||
170 | pointer->references = 1; | - | ||||||||||||||||||||||||
171 | pointer->data = dynlock_create_callback(__FILE__, 259); | - | ||||||||||||||||||||||||
172 | if (pointer->data ==
| 0 | ||||||||||||||||||||||||
173 | ((void *)0)
| 0 | ||||||||||||||||||||||||
174 | ) { | - | ||||||||||||||||||||||||
175 | free(pointer); | - | ||||||||||||||||||||||||
176 | ERR_put_error(15,(0xfff),((1|64)),__FILE__,262); | - | ||||||||||||||||||||||||
177 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
178 | } | - | ||||||||||||||||||||||||
179 | - | |||||||||||||||||||||||||
180 | CRYPTO_lock(1|8,29,__FILE__,266); | - | ||||||||||||||||||||||||
181 | - | |||||||||||||||||||||||||
182 | i = sk_find(((_STACK*) (1 ? (dyn_locks) : (struct stack_st_CRYPTO_dynlock*)0)), ((void*) (1 ? ( | - | ||||||||||||||||||||||||
183 | ((void *)0) | - | ||||||||||||||||||||||||
184 | ) : (CRYPTO_dynlock*)0))); | - | ||||||||||||||||||||||||
185 | - | |||||||||||||||||||||||||
186 | if (i == -1
| 0 | ||||||||||||||||||||||||
187 | - | |||||||||||||||||||||||||
188 | - | |||||||||||||||||||||||||
189 | - | |||||||||||||||||||||||||
190 | - | |||||||||||||||||||||||||
191 | i = sk_push(((_STACK*) (1 ? (dyn_locks) : (struct stack_st_CRYPTO_dynlock*)0)), ((void*) (1 ? (pointer) : (CRYPTO_dynlock*)0))) - 1; never executed: i = sk_push(((_STACK*) (1 ? (dyn_locks) : (struct stack_st_CRYPTO_dynlock*)0)), ((void*) (1 ? (pointer) : (CRYPTO_dynlock*)0))) - 1; | 0 | ||||||||||||||||||||||||
192 | else | - | ||||||||||||||||||||||||
193 | - | |||||||||||||||||||||||||
194 | - | |||||||||||||||||||||||||
195 | ( never executed: void)sk_set(((_STACK*) (1 ? (dyn_locks) : (struct stack_st_CRYPTO_dynlock*)0)), (i), ((void*) (1 ? (pointer) : (CRYPTO_dynlock*)0)));(void)sk_set(((_STACK*) (1 ? (dyn_locks) : (struct stack_st_CRYPTO_dynlock*)0)), (i), ((void*) (1 ? (pointer) : (CRYPTO_dynlock*)0))); never executed: (void)sk_set(((_STACK*) (1 ? (dyn_locks) : (struct stack_st_CRYPTO_dynlock*)0)), (i), ((void*) (1 ? (pointer) : (CRYPTO_dynlock*)0))); | 0 | ||||||||||||||||||||||||
196 | CRYPTO_lock(2|8,29,__FILE__,280); | - | ||||||||||||||||||||||||
197 | - | |||||||||||||||||||||||||
198 | if (i == -1
| 0 | ||||||||||||||||||||||||
199 | dynlock_destroy_callback(pointer->data, __FILE__, 283); | - | ||||||||||||||||||||||||
200 | free(pointer); | - | ||||||||||||||||||||||||
201 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
202 | i += 1; never executed: i += 1; | 0 | ||||||||||||||||||||||||
203 | return never executed: -i;return -i; never executed: return -i; | 0 | ||||||||||||||||||||||||
204 | } | - | ||||||||||||||||||||||||
205 | - | |||||||||||||||||||||||||
206 | void | - | ||||||||||||||||||||||||
207 | CRYPTO_destroy_dynlockid(int i) | - | ||||||||||||||||||||||||
208 | { | - | ||||||||||||||||||||||||
209 | CRYPTO_dynlock *pointer = | - | ||||||||||||||||||||||||
210 | ((void *)0) | - | ||||||||||||||||||||||||
211 | ; | - | ||||||||||||||||||||||||
212 | - | |||||||||||||||||||||||||
213 | if (i
| 0 | ||||||||||||||||||||||||
214 | i = -i - 1; never executed: i = -i - 1; | 0 | ||||||||||||||||||||||||
215 | if (dynlock_destroy_callback ==
| 0 | ||||||||||||||||||||||||
216 | ((void *)0)
| 0 | ||||||||||||||||||||||||
217 | ) | - | ||||||||||||||||||||||||
218 | return; never executed: return; | 0 | ||||||||||||||||||||||||
219 | - | |||||||||||||||||||||||||
220 | CRYPTO_lock(1|8,29,__FILE__,300); | - | ||||||||||||||||||||||||
221 | - | |||||||||||||||||||||||||
222 | if (dyn_locks ==
| 0 | ||||||||||||||||||||||||
223 | ((void *)0)
| 0 | ||||||||||||||||||||||||
224 | || i >= sk_num(((_STACK*) (1 ? (dyn_locks) : (struct stack_st_CRYPTO_dynlock*)0)))
| 0 | ||||||||||||||||||||||||
225 | CRYPTO_lock(2|8,29,__FILE__,303); | - | ||||||||||||||||||||||||
226 | return; never executed: return; | 0 | ||||||||||||||||||||||||
227 | } | - | ||||||||||||||||||||||||
228 | pointer = ((CRYPTO_dynlock *)sk_value(((_STACK*) (1 ? (dyn_locks) : (struct stack_st_CRYPTO_dynlock*)0)), (i))); | - | ||||||||||||||||||||||||
229 | if (pointer !=
| 0 | ||||||||||||||||||||||||
230 | ((void *)0)
| 0 | ||||||||||||||||||||||||
231 | ) { | - | ||||||||||||||||||||||||
232 | --pointer->references; | - | ||||||||||||||||||||||||
233 | if (pointer->references <= 0
| 0 | ||||||||||||||||||||||||
234 | (void)sk_set(((_STACK*) (1 ? (dyn_locks) : (struct stack_st_CRYPTO_dynlock*)0)), (i), ((void*) (1 ? ( | - | ||||||||||||||||||||||||
235 | ((void *)0) | - | ||||||||||||||||||||||||
236 | ) : (CRYPTO_dynlock*)0))); | - | ||||||||||||||||||||||||
237 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
238 | pointer = never executed: pointer = ((void *)0) ; | 0 | ||||||||||||||||||||||||
239 | ((void *)0) never executed: pointer = ((void *)0) ; | 0 | ||||||||||||||||||||||||
240 | ; never executed: pointer = ((void *)0) ; | 0 | ||||||||||||||||||||||||
241 | } | - | ||||||||||||||||||||||||
242 | CRYPTO_lock(2|8,29,__FILE__,314); | - | ||||||||||||||||||||||||
243 | - | |||||||||||||||||||||||||
244 | if (pointer
| 0 | ||||||||||||||||||||||||
245 | dynlock_destroy_callback(pointer->data, __FILE__, 317); | - | ||||||||||||||||||||||||
246 | free(pointer); | - | ||||||||||||||||||||||||
247 | } never executed: end of block | 0 | ||||||||||||||||||||||||
248 | } never executed: end of block | 0 | ||||||||||||||||||||||||
249 | - | |||||||||||||||||||||||||
250 | struct CRYPTO_dynlock_value * | - | ||||||||||||||||||||||||
251 | CRYPTO_get_dynlock_value(int i) | - | ||||||||||||||||||||||||
252 | { | - | ||||||||||||||||||||||||
253 | CRYPTO_dynlock *pointer = | - | ||||||||||||||||||||||||
254 | ((void *)0) | - | ||||||||||||||||||||||||
255 | ; | - | ||||||||||||||||||||||||
256 | - | |||||||||||||||||||||||||
257 | if (i
| 0 | ||||||||||||||||||||||||
258 | i = -i - 1; never executed: i = -i - 1; | 0 | ||||||||||||||||||||||||
259 | - | |||||||||||||||||||||||||
260 | CRYPTO_lock(1|8,29,__FILE__,330); | - | ||||||||||||||||||||||||
261 | - | |||||||||||||||||||||||||
262 | if (dyn_locks !=
| 0 | ||||||||||||||||||||||||
263 | ((void *)0)
| 0 | ||||||||||||||||||||||||
264 | && i < sk_num(((_STACK*) (1 ? (dyn_locks) : (struct stack_st_CRYPTO_dynlock*)0)))
| 0 | ||||||||||||||||||||||||
265 | pointer = ((CRYPTO_dynlock *)sk_value(((_STACK*) (1 ? (dyn_locks) : (struct stack_st_CRYPTO_dynlock*)0)), (i))); never executed: pointer = ((CRYPTO_dynlock *)sk_value(((_STACK*) (1 ? (dyn_locks) : (struct stack_st_CRYPTO_dynlock*)0)), (i))); | 0 | ||||||||||||||||||||||||
266 | if (pointer
| 0 | ||||||||||||||||||||||||
267 | pointer->references++; never executed: pointer->references++; | 0 | ||||||||||||||||||||||||
268 | - | |||||||||||||||||||||||||
269 | CRYPTO_lock(2|8,29,__FILE__,337); | - | ||||||||||||||||||||||||
270 | - | |||||||||||||||||||||||||
271 | if (pointer
| 0 | ||||||||||||||||||||||||
272 | return never executed: pointer->data;return pointer->data; never executed: return pointer->data; | 0 | ||||||||||||||||||||||||
273 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
274 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
275 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
276 | } | - | ||||||||||||||||||||||||
277 | - | |||||||||||||||||||||||||
278 | struct CRYPTO_dynlock_value * | - | ||||||||||||||||||||||||
279 | (*CRYPTO_get_dynlock_create_callback(void))(const char *file, int line) | - | ||||||||||||||||||||||||
280 | { | - | ||||||||||||||||||||||||
281 | return never executed: (dynlock_create_callback);return (dynlock_create_callback); never executed: return (dynlock_create_callback); | 0 | ||||||||||||||||||||||||
282 | } | - | ||||||||||||||||||||||||
283 | - | |||||||||||||||||||||||||
284 | void | - | ||||||||||||||||||||||||
285 | (*CRYPTO_get_dynlock_lock_callback(void))(int mode, | - | ||||||||||||||||||||||||
286 | struct CRYPTO_dynlock_value *l, const char *file, int line) | - | ||||||||||||||||||||||||
287 | { | - | ||||||||||||||||||||||||
288 | return never executed: (dynlock_lock_callback);return (dynlock_lock_callback); never executed: return (dynlock_lock_callback); | 0 | ||||||||||||||||||||||||
289 | } | - | ||||||||||||||||||||||||
290 | - | |||||||||||||||||||||||||
291 | void | - | ||||||||||||||||||||||||
292 | (*CRYPTO_get_dynlock_destroy_callback(void))(struct CRYPTO_dynlock_value *l, | - | ||||||||||||||||||||||||
293 | const char *file, int line) | - | ||||||||||||||||||||||||
294 | { | - | ||||||||||||||||||||||||
295 | return never executed: (dynlock_destroy_callback);return (dynlock_destroy_callback); never executed: return (dynlock_destroy_callback); | 0 | ||||||||||||||||||||||||
296 | } | - | ||||||||||||||||||||||||
297 | - | |||||||||||||||||||||||||
298 | void | - | ||||||||||||||||||||||||
299 | CRYPTO_set_dynlock_create_callback( | - | ||||||||||||||||||||||||
300 | struct CRYPTO_dynlock_value *(*func)(const char *file, int line)) | - | ||||||||||||||||||||||||
301 | { | - | ||||||||||||||||||||||||
302 | dynlock_create_callback = func; | - | ||||||||||||||||||||||||
303 | } never executed: end of block | 0 | ||||||||||||||||||||||||
304 | - | |||||||||||||||||||||||||
305 | void | - | ||||||||||||||||||||||||
306 | CRYPTO_set_dynlock_lock_callback(void (*func)(int mode, | - | ||||||||||||||||||||||||
307 | struct CRYPTO_dynlock_value *l, const char *file, int line)) | - | ||||||||||||||||||||||||
308 | { | - | ||||||||||||||||||||||||
309 | dynlock_lock_callback = func; | - | ||||||||||||||||||||||||
310 | } never executed: end of block | 0 | ||||||||||||||||||||||||
311 | - | |||||||||||||||||||||||||
312 | void | - | ||||||||||||||||||||||||
313 | CRYPTO_set_dynlock_destroy_callback( | - | ||||||||||||||||||||||||
314 | void (*func)(struct CRYPTO_dynlock_value *l, const char *file, int line)) | - | ||||||||||||||||||||||||
315 | { | - | ||||||||||||||||||||||||
316 | dynlock_destroy_callback = func; | - | ||||||||||||||||||||||||
317 | } never executed: end of block | 0 | ||||||||||||||||||||||||
318 | - | |||||||||||||||||||||||||
319 | void | - | ||||||||||||||||||||||||
320 | (*CRYPTO_get_locking_callback(void))(int mode, int type, const char *file, | - | ||||||||||||||||||||||||
321 | int line) | - | ||||||||||||||||||||||||
322 | { | - | ||||||||||||||||||||||||
323 | return never executed: (locking_callback);return (locking_callback); never executed: return (locking_callback); | 0 | ||||||||||||||||||||||||
324 | } | - | ||||||||||||||||||||||||
325 | - | |||||||||||||||||||||||||
326 | int | - | ||||||||||||||||||||||||
327 | (*CRYPTO_get_add_lock_callback(void))(int *num, int mount, int type, | - | ||||||||||||||||||||||||
328 | const char *file, int line) | - | ||||||||||||||||||||||||
329 | { | - | ||||||||||||||||||||||||
330 | return never executed: (add_lock_callback);return (add_lock_callback); never executed: return (add_lock_callback); | 0 | ||||||||||||||||||||||||
331 | } | - | ||||||||||||||||||||||||
332 | - | |||||||||||||||||||||||||
333 | void | - | ||||||||||||||||||||||||
334 | CRYPTO_set_locking_callback(void (*func)(int mode, int type, | - | ||||||||||||||||||||||||
335 | const char *file, int line)) | - | ||||||||||||||||||||||||
336 | { | - | ||||||||||||||||||||||||
337 | - | |||||||||||||||||||||||||
338 | - | |||||||||||||||||||||||||
339 | - | |||||||||||||||||||||||||
340 | locking_callback = func; | - | ||||||||||||||||||||||||
341 | } executed 261 times by 2 tests: end of block Executed by:
| 261 | ||||||||||||||||||||||||
342 | - | |||||||||||||||||||||||||
343 | void | - | ||||||||||||||||||||||||
344 | CRYPTO_set_add_lock_callback(int (*func)(int *num, int mount, int type, | - | ||||||||||||||||||||||||
345 | const char *file, int line)) | - | ||||||||||||||||||||||||
346 | { | - | ||||||||||||||||||||||||
347 | add_lock_callback = func; | - | ||||||||||||||||||||||||
348 | } never executed: end of block | 0 | ||||||||||||||||||||||||
349 | - | |||||||||||||||||||||||||
350 | - | |||||||||||||||||||||||||
351 | - | |||||||||||||||||||||||||
352 | - | |||||||||||||||||||||||||
353 | void | - | ||||||||||||||||||||||||
354 | CRYPTO_THREADID_set_numeric(CRYPTO_THREADID *id, unsigned long val) | - | ||||||||||||||||||||||||
355 | { | - | ||||||||||||||||||||||||
356 | memset(id, 0, sizeof(*id)); | - | ||||||||||||||||||||||||
357 | id->val = val; | - | ||||||||||||||||||||||||
358 | } never executed: end of block | 0 | ||||||||||||||||||||||||
359 | - | |||||||||||||||||||||||||
360 | void | - | ||||||||||||||||||||||||
361 | CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id, void *ptr) | - | ||||||||||||||||||||||||
362 | { | - | ||||||||||||||||||||||||
363 | memset(id, 0, sizeof(*id)); | - | ||||||||||||||||||||||||
364 | id->ptr = ptr; | - | ||||||||||||||||||||||||
365 | - | |||||||||||||||||||||||||
366 | - | |||||||||||||||||||||||||
367 | id->val = (uintptr_t)id->ptr; | - | ||||||||||||||||||||||||
368 | } executed 10741 times by 24 tests: end of block Executed by:
| 10741 | ||||||||||||||||||||||||
369 | - | |||||||||||||||||||||||||
370 | int | - | ||||||||||||||||||||||||
371 | CRYPTO_THREADID_set_callback(void (*func)(CRYPTO_THREADID *)) | - | ||||||||||||||||||||||||
372 | { | - | ||||||||||||||||||||||||
373 | if (threadid_callback
| 0 | ||||||||||||||||||||||||
374 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
375 | threadid_callback = func; | - | ||||||||||||||||||||||||
376 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
377 | } | - | ||||||||||||||||||||||||
378 | - | |||||||||||||||||||||||||
379 | void (*CRYPTO_THREADID_get_callback(void))(CRYPTO_THREADID *) | - | ||||||||||||||||||||||||
380 | { | - | ||||||||||||||||||||||||
381 | return never executed: threadid_callback;return threadid_callback; never executed: return threadid_callback; | 0 | ||||||||||||||||||||||||
382 | } | - | ||||||||||||||||||||||||
383 | - | |||||||||||||||||||||||||
384 | void | - | ||||||||||||||||||||||||
385 | CRYPTO_THREADID_current(CRYPTO_THREADID *id) | - | ||||||||||||||||||||||||
386 | { | - | ||||||||||||||||||||||||
387 | if (threadid_callback
| 0-10741 | ||||||||||||||||||||||||
388 | threadid_callback(id); | - | ||||||||||||||||||||||||
389 | return; never executed: return; | 0 | ||||||||||||||||||||||||
390 | } | - | ||||||||||||||||||||||||
391 | - | |||||||||||||||||||||||||
392 | - | |||||||||||||||||||||||||
393 | if (id_callback
| 0-10741 | ||||||||||||||||||||||||
394 | CRYPTO_THREADID_set_numeric(id, id_callback()); | - | ||||||||||||||||||||||||
395 | return; never executed: return; | 0 | ||||||||||||||||||||||||
396 | } | - | ||||||||||||||||||||||||
397 | - | |||||||||||||||||||||||||
398 | - | |||||||||||||||||||||||||
399 | - | |||||||||||||||||||||||||
400 | CRYPTO_THREADID_set_pointer(id, (void*)& | - | ||||||||||||||||||||||||
401 | (*__errno_location ()) | - | ||||||||||||||||||||||||
402 | ); | - | ||||||||||||||||||||||||
403 | } executed 10741 times by 24 tests: end of block Executed by:
| 10741 | ||||||||||||||||||||||||
404 | - | |||||||||||||||||||||||||
405 | int | - | ||||||||||||||||||||||||
406 | CRYPTO_THREADID_cmp(const CRYPTO_THREADID *a, const CRYPTO_THREADID *b) | - | ||||||||||||||||||||||||
407 | { | - | ||||||||||||||||||||||||
408 | return executed 10318 times by 20 tests: memcmp(a, b, sizeof(*a));return memcmp(a, b, sizeof(*a)); Executed by:
executed 10318 times by 20 tests: return memcmp(a, b, sizeof(*a)); Executed by:
| 10318 | ||||||||||||||||||||||||
409 | } | - | ||||||||||||||||||||||||
410 | - | |||||||||||||||||||||||||
411 | void | - | ||||||||||||||||||||||||
412 | CRYPTO_THREADID_cpy(CRYPTO_THREADID *dest, const CRYPTO_THREADID *src) | - | ||||||||||||||||||||||||
413 | { | - | ||||||||||||||||||||||||
414 | memcpy(dest, src, sizeof(*src)); | - | ||||||||||||||||||||||||
415 | } executed 9773 times by 20 tests: end of block Executed by:
| 9773 | ||||||||||||||||||||||||
416 | - | |||||||||||||||||||||||||
417 | unsigned long | - | ||||||||||||||||||||||||
418 | CRYPTO_THREADID_hash(const CRYPTO_THREADID *id) | - | ||||||||||||||||||||||||
419 | { | - | ||||||||||||||||||||||||
420 | return executed 10323 times by 20 tests: id->val;return id->val; Executed by:
executed 10323 times by 20 tests: return id->val; Executed by:
| 10323 | ||||||||||||||||||||||||
421 | } | - | ||||||||||||||||||||||||
422 | - | |||||||||||||||||||||||||
423 | - | |||||||||||||||||||||||||
424 | unsigned long (*CRYPTO_get_id_callback(void))(void) | - | ||||||||||||||||||||||||
425 | { | - | ||||||||||||||||||||||||
426 | return never executed: (id_callback);return (id_callback); never executed: return (id_callback); | 0 | ||||||||||||||||||||||||
427 | } | - | ||||||||||||||||||||||||
428 | - | |||||||||||||||||||||||||
429 | void | - | ||||||||||||||||||||||||
430 | CRYPTO_set_id_callback(unsigned long (*func)(void)) | - | ||||||||||||||||||||||||
431 | { | - | ||||||||||||||||||||||||
432 | id_callback = func; | - | ||||||||||||||||||||||||
433 | } never executed: end of block | 0 | ||||||||||||||||||||||||
434 | - | |||||||||||||||||||||||||
435 | unsigned long | - | ||||||||||||||||||||||||
436 | CRYPTO_thread_id(void) | - | ||||||||||||||||||||||||
437 | { | - | ||||||||||||||||||||||||
438 | unsigned long ret = 0; | - | ||||||||||||||||||||||||
439 | - | |||||||||||||||||||||||||
440 | if (id_callback ==
| 0 | ||||||||||||||||||||||||
441 | ((void *)0)
| 0 | ||||||||||||||||||||||||
442 | ) { | - | ||||||||||||||||||||||||
443 | ret = (unsigned long)getpid(); | - | ||||||||||||||||||||||||
444 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
445 | ret = id_callback(); never executed: ret = id_callback(); | 0 | ||||||||||||||||||||||||
446 | return never executed: (ret);return (ret); never executed: return (ret); | 0 | ||||||||||||||||||||||||
447 | } | - | ||||||||||||||||||||||||
448 | - | |||||||||||||||||||||||||
449 | - | |||||||||||||||||||||||||
450 | void | - | ||||||||||||||||||||||||
451 | CRYPTO_lock(int mode, int type, const char *file, int line) | - | ||||||||||||||||||||||||
452 | { | - | ||||||||||||||||||||||||
453 | if (type < 0
| 0-1942902 | ||||||||||||||||||||||||
454 | if (dynlock_lock_callback !=
| 0 | ||||||||||||||||||||||||
455 | ((void *)0)
| 0 | ||||||||||||||||||||||||
456 | ) { | - | ||||||||||||||||||||||||
457 | struct CRYPTO_dynlock_value *pointer = | - | ||||||||||||||||||||||||
458 | CRYPTO_get_dynlock_value(type); | - | ||||||||||||||||||||||||
459 | - | |||||||||||||||||||||||||
460 | (void)((pointer != | - | ||||||||||||||||||||||||
461 | ((void *)0) | - | ||||||||||||||||||||||||
462 | ) ? 0 : (OpenSSLDie(__FILE__, 556, "pointer != NULL"),1)); | - | ||||||||||||||||||||||||
463 | - | |||||||||||||||||||||||||
464 | dynlock_lock_callback(mode, pointer, file, line); | - | ||||||||||||||||||||||||
465 | - | |||||||||||||||||||||||||
466 | CRYPTO_destroy_dynlockid(type); | - | ||||||||||||||||||||||||
467 | } never executed: end of block | 0 | ||||||||||||||||||||||||
468 | } never executed: else if (locking_callback != end of block
| 0-1422882 | ||||||||||||||||||||||||
469 | ((void *)0)
| 520020-1422882 | ||||||||||||||||||||||||
470 | ) | - | ||||||||||||||||||||||||
471 | locking_callback(mode, type, file, line); executed 520020 times by 2 tests: locking_callback(mode, type, file, line); Executed by:
| 520020 | ||||||||||||||||||||||||
472 | } executed 1942902 times by 33 tests: end of block Executed by:
| 1942902 | ||||||||||||||||||||||||
473 | - | |||||||||||||||||||||||||
474 | int | - | ||||||||||||||||||||||||
475 | CRYPTO_add_lock(int *pointer, int amount, int type, const char *file, | - | ||||||||||||||||||||||||
476 | int line) | - | ||||||||||||||||||||||||
477 | { | - | ||||||||||||||||||||||||
478 | int ret = 0; | - | ||||||||||||||||||||||||
479 | - | |||||||||||||||||||||||||
480 | if (add_lock_callback !=
| 0-43858 | ||||||||||||||||||||||||
481 | ((void *)0)
| 0-43858 | ||||||||||||||||||||||||
482 | ) { | - | ||||||||||||||||||||||||
483 | - | |||||||||||||||||||||||||
484 | - | |||||||||||||||||||||||||
485 | - | |||||||||||||||||||||||||
486 | - | |||||||||||||||||||||||||
487 | ret = add_lock_callback(pointer, amount, type, file, line); | - | ||||||||||||||||||||||||
488 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
489 | CRYPTO_lock(1|8, type, file, line); | - | ||||||||||||||||||||||||
490 | - | |||||||||||||||||||||||||
491 | ret= *pointer + amount; | - | ||||||||||||||||||||||||
492 | *pointer = ret; | - | ||||||||||||||||||||||||
493 | CRYPTO_lock(2|8, type, file, line); | - | ||||||||||||||||||||||||
494 | } executed 43858 times by 31 tests: end of block Executed by:
| 43858 | ||||||||||||||||||||||||
495 | return executed 43858 times by 31 tests: (ret);return (ret); Executed by:
executed 43858 times by 31 tests: return (ret); Executed by:
| 43858 | ||||||||||||||||||||||||
496 | } | - | ||||||||||||||||||||||||
497 | - | |||||||||||||||||||||||||
498 | const char * | - | ||||||||||||||||||||||||
499 | CRYPTO_get_lock_name(int type) | - | ||||||||||||||||||||||||
500 | { | - | ||||||||||||||||||||||||
501 | if (type < 0
| 0 | ||||||||||||||||||||||||
502 | return never executed: ("dynamic");return("dynamic"); never executed: return("dynamic"); | 0 | ||||||||||||||||||||||||
503 | else if (type < 41
| 0 | ||||||||||||||||||||||||
504 | return never executed: (lock_names[type]);return (lock_names[type]); never executed: return (lock_names[type]); | 0 | ||||||||||||||||||||||||
505 | else if (type - 41 > sk_num(((_STACK*) (1 ? app_locks : (struct stack_st_OPENSSL_STRING*)0)))
| 0 | ||||||||||||||||||||||||
506 | return never executed: ("ERROR");return("ERROR"); never executed: return("ERROR"); | 0 | ||||||||||||||||||||||||
507 | else | - | ||||||||||||||||||||||||
508 | return never executed: (((OPENSSL_STRING)sk_value(((_STACK*) (1 ? app_locks : (struct stack_st_OPENSSL_STRING*)0)), type - 41))return (((OPENSSL_STRING)sk_value(((_STACK*) (1 ? app_locks : (struct stack_st_OPENSSL_STRING*)0)), type - 41)) ); never executed: return (((OPENSSL_STRING)sk_value(((_STACK*) (1 ? app_locks : (struct stack_st_OPENSSL_STRING*)0)), type - 41)) ); | 0 | ||||||||||||||||||||||||
509 | ); never executed: return (((OPENSSL_STRING)sk_value(((_STACK*) (1 ? app_locks : (struct stack_st_OPENSSL_STRING*)0)), type - 41)) ); | 0 | ||||||||||||||||||||||||
510 | } | - | ||||||||||||||||||||||||
511 | - | |||||||||||||||||||||||||
512 | - | |||||||||||||||||||||||||
513 | - | |||||||||||||||||||||||||
514 | - | |||||||||||||||||||||||||
515 | - | |||||||||||||||||||||||||
516 | uint64_t OPENSSL_ia32cap_P; | - | ||||||||||||||||||||||||
517 | - | |||||||||||||||||||||||||
518 | uint64_t | - | ||||||||||||||||||||||||
519 | OPENSSL_cpu_caps(void) | - | ||||||||||||||||||||||||
520 | { | - | ||||||||||||||||||||||||
521 | return executed 11601 times by 35 tests: OPENSSL_ia32cap_P;return OPENSSL_ia32cap_P; Executed by:
executed 11601 times by 35 tests: return OPENSSL_ia32cap_P; Executed by:
| 11601 | ||||||||||||||||||||||||
522 | } | - | ||||||||||||||||||||||||
523 | - | |||||||||||||||||||||||||
524 | - | |||||||||||||||||||||||||
525 | - | |||||||||||||||||||||||||
526 | void | - | ||||||||||||||||||||||||
527 | OPENSSL_cpuid_setup(void) | - | ||||||||||||||||||||||||
528 | { | - | ||||||||||||||||||||||||
529 | static int trigger = 0; | - | ||||||||||||||||||||||||
530 | uint64_t OPENSSL_ia32_cpuid(void); | - | ||||||||||||||||||||||||
531 | - | |||||||||||||||||||||||||
532 | if (trigger
| 309-505 | ||||||||||||||||||||||||
533 | return; executed 505 times by 33 tests: return; Executed by:
| 505 | ||||||||||||||||||||||||
534 | trigger = 1; | - | ||||||||||||||||||||||||
535 | OPENSSL_ia32cap_P = OPENSSL_ia32_cpuid(); | - | ||||||||||||||||||||||||
536 | } executed 309 times by 50 tests: end of block Executed by:
| 309 | ||||||||||||||||||||||||
537 | static void | - | ||||||||||||||||||||||||
538 | OPENSSL_showfatal(const char *fmta, ...) | - | ||||||||||||||||||||||||
539 | { | - | ||||||||||||||||||||||||
540 | va_list ap; | - | ||||||||||||||||||||||||
541 | - | |||||||||||||||||||||||||
542 | - | |||||||||||||||||||||||||
543 | __builtin_va_start( | - | ||||||||||||||||||||||||
544 | ap | - | ||||||||||||||||||||||||
545 | , | - | ||||||||||||||||||||||||
546 | fmta | - | ||||||||||||||||||||||||
547 | ) | - | ||||||||||||||||||||||||
548 | ; | - | ||||||||||||||||||||||||
549 | vfprintf( | - | ||||||||||||||||||||||||
550 | stderr | - | ||||||||||||||||||||||||
551 | , fmta, ap); | - | ||||||||||||||||||||||||
552 | - | |||||||||||||||||||||||||
553 | __builtin_va_end( | - | ||||||||||||||||||||||||
554 | ap | - | ||||||||||||||||||||||||
555 | ) | - | ||||||||||||||||||||||||
556 | ; | - | ||||||||||||||||||||||||
557 | } never executed: end of block | 0 | ||||||||||||||||||||||||
558 | - | |||||||||||||||||||||||||
559 | void | - | ||||||||||||||||||||||||
560 | OpenSSLDie(const char *file, int line, const char *assertion) | - | ||||||||||||||||||||||||
561 | { | - | ||||||||||||||||||||||||
562 | OPENSSL_showfatal( | - | ||||||||||||||||||||||||
563 | "%s(%d): OpenSSL internal error, assertion failed: %s\n", | - | ||||||||||||||||||||||||
564 | file, line, assertion); | - | ||||||||||||||||||||||||
565 | abort(); never executed: abort(); | 0 | ||||||||||||||||||||||||
566 | } | - | ||||||||||||||||||||||||
567 | - | |||||||||||||||||||||||||
568 | int | - | ||||||||||||||||||||||||
569 | CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len) | - | ||||||||||||||||||||||||
570 | { | - | ||||||||||||||||||||||||
571 | size_t i; | - | ||||||||||||||||||||||||
572 | const unsigned char *a = in_a; | - | ||||||||||||||||||||||||
573 | const unsigned char *b = in_b; | - | ||||||||||||||||||||||||
574 | unsigned char x = 0; | - | ||||||||||||||||||||||||
575 | - | |||||||||||||||||||||||||
576 | for (i = 0; i < len
| 0 | ||||||||||||||||||||||||
577 | x |= a[i] ^ b[i]; never executed: x |= a[i] ^ b[i]; | 0 | ||||||||||||||||||||||||
578 | - | |||||||||||||||||||||||||
579 | return never executed: x;return x; never executed: return x; | 0 | ||||||||||||||||||||||||
580 | } | - | ||||||||||||||||||||||||
Switch to Source code | Preprocessed file |