OpenCoverage

eng_list.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/engine/eng_list.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved.-
3 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved-
4 *-
5 * Licensed under the OpenSSL license (the "License"). You may not use-
6 * this file except in compliance with the License. You can obtain a copy-
7 * in the file LICENSE in the source distribution or at-
8 * https://www.openssl.org/source/license.html-
9 */-
10-
11#include "eng_int.h"-
12-
13/*-
14 * The linked-list of pointers to engine types. engine_list_head incorporates-
15 * an implicit structural reference but engine_list_tail does not - the-
16 * latter is a computational optimization and only points to something that-
17 * is already pointed to by its predecessor in the list (or engine_list_head-
18 * itself). In the same way, the use of the "prev" pointer in each ENGINE is-
19 * to save excessive list iteration, it doesn't correspond to an extra-
20 * structural reference. Hence, engine_list_head, and each non-null "next"-
21 * pointer account for the list itself assuming exactly 1 structural-
22 * reference on each list member.-
23 */-
24static ENGINE *engine_list_head = NULL;-
25static ENGINE *engine_list_tail = NULL;-
26-
27/*-
28 * This cleanup function is only needed internally. If it should be called,-
29 * we register it with the "engine_cleanup_int()" stack to be called during-
30 * cleanup.-
31 */-
32-
33static void engine_list_cleanup(void)-
34{-
35 ENGINE *iterator = engine_list_head;-
36-
37 while (iterator != NULL) {
iterator != ((void *)0)Description
TRUEevaluated 2327 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1963 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1963-2327
38 ENGINE_remove(iterator);-
39 iterator = engine_list_head;-
40 }
executed 2327 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
2327
41 return;
executed 1963 times by 1 test: return;
Executed by:
  • libcrypto.so.1.1
1963
42}-
43-
44/*-
45 * These static functions starting with a lower case "engine_" always take-
46 * place when global_engine_lock has been locked up.-
47 */-
48static int engine_list_add(ENGINE *e)-
49{-
50 int conflict = 0;-
51 ENGINE *iterator = NULL;-
52-
53 if (e == NULL) {
e == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2845 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2845
54 ENGINEerr(ENGINE_F_ENGINE_LIST_ADD, ERR_R_PASSED_NULL_PARAMETER);-
55 return 0;
never executed: return 0;
0
56 }-
57 iterator = engine_list_head;-
58 while (iterator && !conflict) {
iteratorDescription
TRUEevaluated 131188 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2844 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
!conflictDescription
TRUEevaluated 131187 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-131188
59 conflict = (strcmp(iterator->id, e->id) == 0);
never executed: __result = (((const unsigned char *) (const char *) ( iterator->id ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( e->id ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
60 iterator = iterator->next;-
61 }
executed 131187 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
131187
62 if (conflict) {
conflictDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2844 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-2844
63 ENGINEerr(ENGINE_F_ENGINE_LIST_ADD, ENGINE_R_CONFLICTING_ENGINE_ID);-
64 return 0;
executed 1 time by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
1
65 }-
66 if (engine_list_head == NULL) {
engine_list_he...== ((void *)0)Description
TRUEevaluated 1963 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 881 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
881-1963
67 /* We are adding to an empty list. */-
68 if (engine_list_tail) {
engine_list_tailDescription
TRUEnever evaluated
FALSEevaluated 1963 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1963
69 ENGINEerr(ENGINE_F_ENGINE_LIST_ADD, ENGINE_R_INTERNAL_LIST_ERROR);-
70 return 0;
never executed: return 0;
0
71 }-
72 engine_list_head = e;-
73 e->prev = NULL;-
74 /*-
75 * The first time the list allocates, we should register the cleanup.-
76 */-
77 engine_cleanup_add_last(engine_list_cleanup);-
78 } else {
executed 1963 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1963
79 /* We are adding to the tail of an existing list. */-
80 if ((engine_list_tail == NULL) || (engine_list_tail->next != NULL)) {
(engine_list_t... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 881 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
(engine_list_t... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 881 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-881
81 ENGINEerr(ENGINE_F_ENGINE_LIST_ADD, ENGINE_R_INTERNAL_LIST_ERROR);-
82 return 0;
never executed: return 0;
0
83 }-
84 engine_list_tail->next = e;-
85 e->prev = engine_list_tail;-
86 }
executed 881 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
881
87 /*-
88 * Having the engine in the list assumes a structural reference.-
89 */-
90 e->struct_ref++;-
91 engine_ref_debug(e, 0, 1);-
92 /* However it came to be, e is the last item in the list. */-
93 engine_list_tail = e;-
94 e->next = NULL;-
95 return 1;
executed 2844 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
2844
96}-
97-
98static int engine_list_remove(ENGINE *e)-
99{-
100 ENGINE *iterator;-
101-
102 if (e == NULL) {
e == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2845 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2845
103 ENGINEerr(ENGINE_F_ENGINE_LIST_REMOVE, ERR_R_PASSED_NULL_PARAMETER);-
104 return 0;
never executed: return 0;
0
105 }-
106 /* We need to check that e is in our linked list! */-
107 iterator = engine_list_head;-
108 while (iterator && (iterator != e))
iteratorDescription
TRUEevaluated 2847 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
(iterator != e)Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2844 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-2847
109 iterator = iterator->next;
executed 3 times by 1 test: iterator = iterator->next;
Executed by:
  • libcrypto.so.1.1
3
110 if (iterator == NULL) {
iterator == ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2844 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-2844
111 ENGINEerr(ENGINE_F_ENGINE_LIST_REMOVE,-
112 ENGINE_R_ENGINE_IS_NOT_IN_LIST);-
113 return 0;
executed 1 time by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
1
114 }-
115 /* un-link e from the chain. */-
116 if (e->next)
e->nextDescription
TRUEevaluated 880 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1964 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
880-1964
117 e->next->prev = e->prev;
executed 880 times by 1 test: e->next->prev = e->prev;
Executed by:
  • libcrypto.so.1.1
880
118 if (e->prev)
e->prevDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2843 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-2843
119 e->prev->next = e->next;
executed 1 time by 1 test: e->prev->next = e->next;
Executed by:
  • libcrypto.so.1.1
1
120 /* Correct our head/tail if necessary. */-
121 if (engine_list_head == e)
engine_list_head == eDescription
TRUEevaluated 2843 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-2843
122 engine_list_head = e->next;
executed 2843 times by 1 test: engine_list_head = e->next;
Executed by:
  • libcrypto.so.1.1
2843
123 if (engine_list_tail == e)
engine_list_tail == eDescription
TRUEevaluated 1964 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 880 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
880-1964
124 engine_list_tail = e->prev;
executed 1964 times by 1 test: engine_list_tail = e->prev;
Executed by:
  • libcrypto.so.1.1
1964
125 engine_free_util(e, 0);-
126 return 1;
executed 2844 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
2844
127}-
128-
129/* Get the first/last "ENGINE" type available. */-
130ENGINE *ENGINE_get_first(void)-
131{-
132 ENGINE *ret;-
133-
134 if (!RUN_ONCE(&engine_lock_init, do_engine_lock_init)) {
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEevaluated 4272 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
CRYPTO_THREAD_...ck_init_ossl_)Description
TRUEevaluated 4272 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-4272
135 ENGINEerr(ENGINE_F_ENGINE_GET_FIRST, ERR_R_MALLOC_FAILURE);-
136 return NULL;
never executed: return ((void *)0) ;
0
137 }-
138-
139 CRYPTO_THREAD_write_lock(global_engine_lock);-
140 ret = engine_list_head;-
141 if (ret) {
retDescription
TRUEevaluated 4266 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
6-4266
142 ret->struct_ref++;-
143 engine_ref_debug(ret, 0, 1);-
144 }
executed 4266 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
4266
145 CRYPTO_THREAD_unlock(global_engine_lock);-
146 return ret;
executed 4272 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
4272
147}-
148-
149ENGINE *ENGINE_get_last(void)-
150{-
151 ENGINE *ret;-
152-
153 if (!RUN_ONCE(&engine_lock_init, do_engine_lock_init)) {
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEnever evaluated
CRYPTO_THREAD_...ck_init_ossl_)Description
TRUEnever evaluated
FALSEnever evaluated
0
154 ENGINEerr(ENGINE_F_ENGINE_GET_LAST, ERR_R_MALLOC_FAILURE);-
155 return NULL;
never executed: return ((void *)0) ;
0
156 }-
157-
158 CRYPTO_THREAD_write_lock(global_engine_lock);-
159 ret = engine_list_tail;-
160 if (ret) {
retDescription
TRUEnever evaluated
FALSEnever evaluated
0
161 ret->struct_ref++;-
162 engine_ref_debug(ret, 0, 1);-
163 }
never executed: end of block
0
164 CRYPTO_THREAD_unlock(global_engine_lock);-
165 return ret;
never executed: return ret;
0
166}-
167-
168/* Iterate to the next/previous "ENGINE" type (NULL = end of the list). */-
169ENGINE *ENGINE_get_next(ENGINE *e)-
170{-
171 ENGINE *ret = NULL;-
172 if (e == NULL) {
e == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3755 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-3755
173 ENGINEerr(ENGINE_F_ENGINE_GET_NEXT, ERR_R_PASSED_NULL_PARAMETER);-
174 return 0;
never executed: return 0;
0
175 }-
176 CRYPTO_THREAD_write_lock(global_engine_lock);-
177 ret = e->next;-
178 if (ret) {
retDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3753 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
2-3753
179 /* Return a valid structural reference to the next ENGINE */-
180 ret->struct_ref++;-
181 engine_ref_debug(ret, 0, 1);-
182 }
executed 2 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
2
183 CRYPTO_THREAD_unlock(global_engine_lock);-
184 /* Release the structural reference to the previous ENGINE */-
185 ENGINE_free(e);-
186 return ret;
executed 3755 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
3755
187}-
188-
189ENGINE *ENGINE_get_prev(ENGINE *e)-
190{-
191 ENGINE *ret = NULL;-
192 if (e == NULL) {
e == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
193 ENGINEerr(ENGINE_F_ENGINE_GET_PREV, ERR_R_PASSED_NULL_PARAMETER);-
194 return 0;
never executed: return 0;
0
195 }-
196 CRYPTO_THREAD_write_lock(global_engine_lock);-
197 ret = e->prev;-
198 if (ret) {
retDescription
TRUEnever evaluated
FALSEnever evaluated
0
199 /* Return a valid structural reference to the next ENGINE */-
200 ret->struct_ref++;-
201 engine_ref_debug(ret, 0, 1);-
202 }
never executed: end of block
0
203 CRYPTO_THREAD_unlock(global_engine_lock);-
204 /* Release the structural reference to the previous ENGINE */-
205 ENGINE_free(e);-
206 return ret;
never executed: return ret;
0
207}-
208-
209/* Add another "ENGINE" type into the list. */-
210int ENGINE_add(ENGINE *e)-
211{-
212 int to_return = 1;-
213 if (e == NULL) {
e == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2845 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2845
214 ENGINEerr(ENGINE_F_ENGINE_ADD, ERR_R_PASSED_NULL_PARAMETER);-
215 return 0;
never executed: return 0;
0
216 }-
217 if ((e->id == NULL) || (e->name == NULL)) {
(e->id == ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2845 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
(e->name == ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2845 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2845
218 ENGINEerr(ENGINE_F_ENGINE_ADD, ENGINE_R_ID_OR_NAME_MISSING);-
219 return 0;
never executed: return 0;
0
220 }-
221 CRYPTO_THREAD_write_lock(global_engine_lock);-
222 if (!engine_list_add(e)) {
!engine_list_add(e)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2844 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-2844
223 ENGINEerr(ENGINE_F_ENGINE_ADD, ENGINE_R_INTERNAL_LIST_ERROR);-
224 to_return = 0;-
225 }
executed 1 time by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1
226 CRYPTO_THREAD_unlock(global_engine_lock);-
227 return to_return;
executed 2845 times by 1 test: return to_return;
Executed by:
  • libcrypto.so.1.1
2845
228}-
229-
230/* Remove an existing "ENGINE" type from the array. */-
231int ENGINE_remove(ENGINE *e)-
232{-
233 int to_return = 1;-
234 if (e == NULL) {
e == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2845 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2845
235 ENGINEerr(ENGINE_F_ENGINE_REMOVE, ERR_R_PASSED_NULL_PARAMETER);-
236 return 0;
never executed: return 0;
0
237 }-
238 CRYPTO_THREAD_write_lock(global_engine_lock);-
239 if (!engine_list_remove(e)) {
!engine_list_remove(e)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2844 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-2844
240 ENGINEerr(ENGINE_F_ENGINE_REMOVE, ENGINE_R_INTERNAL_LIST_ERROR);-
241 to_return = 0;-
242 }
executed 1 time by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1
243 CRYPTO_THREAD_unlock(global_engine_lock);-
244 return to_return;
executed 2845 times by 1 test: return to_return;
Executed by:
  • libcrypto.so.1.1
2845
245}-
246-
247static void engine_cpy(ENGINE *dest, const ENGINE *src)-
248{-
249 dest->id = src->id;-
250 dest->name = src->name;-
251#ifndef OPENSSL_NO_RSA-
252 dest->rsa_meth = src->rsa_meth;-
253#endif-
254#ifndef OPENSSL_NO_DSA-
255 dest->dsa_meth = src->dsa_meth;-
256#endif-
257#ifndef OPENSSL_NO_DH-
258 dest->dh_meth = src->dh_meth;-
259#endif-
260#ifndef OPENSSL_NO_EC-
261 dest->ec_meth = src->ec_meth;-
262#endif-
263 dest->rand_meth = src->rand_meth;-
264 dest->ciphers = src->ciphers;-
265 dest->digests = src->digests;-
266 dest->pkey_meths = src->pkey_meths;-
267 dest->destroy = src->destroy;-
268 dest->init = src->init;-
269 dest->finish = src->finish;-
270 dest->ctrl = src->ctrl;-
271 dest->load_privkey = src->load_privkey;-
272 dest->load_pubkey = src->load_pubkey;-
273 dest->cmd_defns = src->cmd_defns;-
274 dest->flags = src->flags;-
275}
executed 368 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
368
276-
277ENGINE *ENGINE_by_id(const char *id)-
278{-
279 ENGINE *iterator;-
280 char *load_dir = NULL;-
281 if (id == NULL) {
id == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 736 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-736
282 ENGINEerr(ENGINE_F_ENGINE_BY_ID, ERR_R_PASSED_NULL_PARAMETER);-
283 return NULL;
never executed: return ((void *)0) ;
0
284 }-
285 if (!RUN_ONCE(&engine_lock_init, do_engine_lock_init)) {
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEevaluated 736 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
CRYPTO_THREAD_...ck_init_ossl_)Description
TRUEevaluated 736 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-736
286 ENGINEerr(ENGINE_F_ENGINE_BY_ID, ERR_R_MALLOC_FAILURE);-
287 return NULL;
never executed: return ((void *)0) ;
0
288 }-
289-
290 CRYPTO_THREAD_write_lock(global_engine_lock);-
291 iterator = engine_list_head;-
292 while (iterator && (strcmp(id, iterator->id) != 0))
never executed: __result = (((const unsigned char *) (const char *) ( id ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( iterator->id ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
iteratorDescription
TRUEevaluated 736 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
( __extension_...)))); }) != 0)Description
TRUEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-736
293 iterator = iterator->next;
executed 368 times by 1 test: iterator = iterator->next;
Executed by:
  • libcrypto.so.1.1
368
294 if (iterator != NULL) {
iterator != ((void *)0)Description
TRUEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
368
295 /*-
296 * We need to return a structural reference. If this is an ENGINE-
297 * type that returns copies, make a duplicate - otherwise increment-
298 * the existing ENGINE's reference count.-
299 */-
300 if (iterator->flags & ENGINE_FLAGS_BY_ID_COPY) {
iterator->flags & (int)0x0004Description
TRUEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-368
301 ENGINE *cp = ENGINE_new();-
302 if (cp == NULL)
cp == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-368
303 iterator = NULL;
never executed: iterator = ((void *)0) ;
0
304 else {-
305 engine_cpy(cp, iterator);-
306 iterator = cp;-
307 }
executed 368 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
368
308 } else {-
309 iterator->struct_ref++;-
310 engine_ref_debug(iterator, 0, 1);-
311 }
never executed: end of block
0
312 }-
313 CRYPTO_THREAD_unlock(global_engine_lock);-
314 if (iterator != NULL)
iterator != ((void *)0)Description
TRUEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
368
315 return iterator;
executed 368 times by 1 test: return iterator;
Executed by:
  • libcrypto.so.1.1
368
316 /*-
317 * Prevent infinite recursion if we're looking for the dynamic engine.-
318 */-
319 if (strcmp(id, "dynamic")) {
never executed: __result = (((const unsigned char *) (const char *) ( id ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "dynamic" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ...amic" )))); })Description
TRUEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-368
320 if (OPENSSL_issetugid()
OPENSSL_issetugid()Description
TRUEnever evaluated
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-368
321 || (load_dir = getenv("OPENSSL_ENGINES")) == NULL)
(load_dir = ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-368
322 load_dir = ENGINESDIR;
never executed: load_dir = "/usr/local/lib/engines-1.1";
0
323 iterator = ENGINE_by_id("dynamic");-
324 if (!iterator || !ENGINE_ctrl_cmd_string(iterator, "ID", id, 0) ||
!iteratorDescription
TRUEnever evaluated
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
!ENGINE_ctrl_c..., "ID", id, 0)Description
TRUEnever evaluated
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-368
325 !ENGINE_ctrl_cmd_string(iterator, "DIR_LOAD", "2", 0) ||
!ENGINE_ctrl_c...LOAD", "2", 0)Description
TRUEnever evaluated
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-368
326 !ENGINE_ctrl_cmd_string(iterator, "DIR_ADD",
!ENGINE_ctrl_c..., load_dir, 0)Description
TRUEnever evaluated
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-368
327 load_dir, 0) ||
!ENGINE_ctrl_c..., load_dir, 0)Description
TRUEnever evaluated
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-368
328 !ENGINE_ctrl_cmd_string(iterator, "LIST_ADD", "1", 0) ||
!ENGINE_ctrl_c..._ADD", "1", 0)Description
TRUEnever evaluated
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-368
329 !ENGINE_ctrl_cmd_string(iterator, "LOAD", NULL, 0))
!ENGINE_ctrl_c...void *)0) , 0)Description
TRUEnever evaluated
FALSEevaluated 368 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-368
330 goto notfound;
never executed: goto notfound;
0
331 return iterator;
executed 368 times by 1 test: return iterator;
Executed by:
  • libcrypto.so.1.1
368
332 }-
333 notfound:
code before this statement never executed: notfound:
0
334 ENGINE_free(iterator);-
335 ENGINEerr(ENGINE_F_ENGINE_BY_ID, ENGINE_R_NO_SUCH_ENGINE);-
336 ERR_add_error_data(2, "id=", id);-
337 return NULL;
never executed: return ((void *)0) ;
0
338 /* EEK! Experimental code ends */-
339}-
340-
341int ENGINE_up_ref(ENGINE *e)-
342{-
343 int i;-
344 if (e == NULL) {
e == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
345 ENGINEerr(ENGINE_F_ENGINE_UP_REF, ERR_R_PASSED_NULL_PARAMETER);-
346 return 0;
never executed: return 0;
0
347 }-
348 CRYPTO_UP_REF(&e->struct_ref, &i, global_engine_lock);-
349 return 1;
never executed: return 1;
0
350}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2