OpenCoverage

eng_table.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/engine/eng_table.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5typedef struct st_engine_pile {-
6-
7 int nid;-
8-
9 struct stack_st_ENGINE *sk;-
10-
11 ENGINE *funct;-
12-
13 int uptodate;-
14} ENGINE_PILE;-
15-
16struct lhash_st_ENGINE_PILE { int dummy; };-
17-
18-
19struct st_engine_table {-
20 struct lhash_st_ENGINE_PILE piles;-
21};-
22-
23typedef struct st_engine_pile_doall {-
24 engine_table_doall_cb *cb;-
25 void *arg;-
26} ENGINE_PILE_DOALL;-
27-
28-
29static unsigned int table_flags = 0;-
30-
31-
32unsigned int-
33ENGINE_get_table_flags(void)-
34{-
35 return
never executed: return table_flags;
table_flags;
never executed: return table_flags;
0
36}-
37-
38void-
39ENGINE_set_table_flags(unsigned int flags)-
40{-
41 table_flags = flags;-
42}
never executed: end of block
0
43-
44-
45static unsigned long-
46engine_pile_hash(const ENGINE_PILE *c)-
47{-
48 return
never executed: return c->nid;
c->nid;
never executed: return c->nid;
0
49}-
50-
51static int-
52engine_pile_cmp(const ENGINE_PILE *a, const ENGINE_PILE *b)-
53{-
54 return
never executed: return a->nid - b->nid;
a->nid - b->nid;
never executed: return a->nid - b->nid;
0
55}-
56static unsigned long engine_pile_LHASH_HASH(const void *arg) { const ENGINE_PILE *a = arg; return
never executed: return engine_pile_hash(a);
engine_pile_hash(a);
never executed: return engine_pile_hash(a);
}
0
57static int engine_pile_LHASH_COMP(const void *arg1, const void *arg2) { const ENGINE_PILE *a = arg1; const ENGINE_PILE *b = arg2; return
never executed: return engine_pile_cmp(a,b);
engine_pile_cmp(a,b);
never executed: return engine_pile_cmp(a,b);
}
0
58-
59static int-
60int_table_check(ENGINE_TABLE **t, int create)-
61{-
62 struct lhash_st_ENGINE_PILE *lh;-
63-
64 if (*
*tDescription
TRUEnever evaluated
FALSEnever evaluated
t
*tDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
65 return
never executed: return 1;
1;
never executed: return 1;
0
66 if (!create
!createDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
67 return
never executed: return 0;
0;
never executed: return 0;
0
68 if ((
(lh = ((struct...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
lh = ((struct lhash_st_ENGINE_PILE *)lh_new(engine_pile_LHASH_HASH, engine_pile_LHASH_COMP))) ==
(lh = ((struct...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
69 ((void *)0)
(lh = ((struct...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
70 )-
71 return
never executed: return 0;
0;
never executed: return 0;
0
72 *t = (ENGINE_TABLE *)lh;-
73 return
never executed: return 1;
1;
never executed: return 1;
0
74}-
75-
76-
77-
78int-
79engine_table_register(ENGINE_TABLE **table, ENGINE_CLEANUP_CB *cleanup,-
80 ENGINE *e, const int *nids, int num_nids, int setdefault)-
81{-
82 int ret = 0, added = 0;-
83 ENGINE_PILE tmplate, *fnd;-
84-
85 CRYPTO_lock(1|8,30,__FILE__,141);-
86 if (!(*table)
!(*table)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
87 added = 1;
never executed: added = 1;
0
88 if (!int_table_check(table, 1)
!int_table_check(table, 1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
89 goto
never executed: goto end;
end;
never executed: goto end;
0
90 if (added
addedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
91-
92 engine_cleanup_add_first(cleanup);
never executed: engine_cleanup_add_first(cleanup);
0
93 while (num_nids--
num_nids--Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
94 tmplate.nid = *nids;-
95 fnd = ((ENGINE_PILE *)lh_retrieve(((_LHASH *)((void*) (1 ? &(*table)->piles : (struct lhash_st_ENGINE_PILE*)0))), ((void*) (1 ? &tmplate : (ENGINE_PILE*)0))));-
96 if (!fnd
!fndDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
97 fnd = malloc(sizeof(ENGINE_PILE));-
98 if (!fnd
!fndDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
99 goto
never executed: goto end;
end;
never executed: goto end;
0
100 fnd->uptodate = 1;-
101 fnd->nid = *nids;-
102 fnd->sk = ((struct stack_st_ENGINE *)sk_new_null());-
103 if (!fnd->sk
!fnd->skDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
104 free(fnd);-
105 goto
never executed: goto end;
end;
never executed: goto end;
0
106 }-
107 fnd->funct = -
108 ((void *)0)-
109 ;-
110 (void)((ENGINE_PILE *)lh_insert(((_LHASH *)((void*) (1 ? &(*table)->piles : (struct lhash_st_ENGINE_PILE*)0))), ((void*) (1 ? fnd : (ENGINE_PILE*)0))));-
111 }
never executed: end of block
0
112-
113 (void)(ENGINE *)sk_delete_ptr(((_STACK*) (1 ? (fnd->sk) : (struct stack_st_ENGINE*)0)), ((void*) (1 ? (e) : (ENGINE*)0)));-
114-
115 if (!sk_push(((_STACK*) (1 ? (fnd->sk) : (struct stack_st_ENGINE*)0)), ((void*) (1 ? (e) : (ENGINE*)0)))
!sk_push(((_ST... (ENGINE*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
116 goto
never executed: goto end;
end;
never executed: goto end;
0
117-
118 fnd->uptodate = 0;-
119 if (setdefault
setdefaultDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
120 if (!engine_unlocked_init(e)
!engine_unlocked_init(e)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
121 ERR_put_error(38,(0xfff),(109),__FILE__,175);-
122 goto
never executed: goto end;
end;
never executed: goto end;
0
123 }-
124 if (fnd->funct
fnd->functDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
125 engine_unlocked_finish(fnd->funct, 0);
never executed: engine_unlocked_finish(fnd->funct, 0);
0
126 fnd->funct = e;-
127 fnd->uptodate = 1;-
128 }
never executed: end of block
0
129 nids++;-
130 }
never executed: end of block
0
131 ret = 1;-
132end:
code before this statement never executed: end:
0
133 CRYPTO_lock(2|8,30,__FILE__,187);-
134 return
never executed: return ret;
ret;
never executed: return ret;
0
135}-
136-
137static void-
138int_unregister_cb_doall_arg(ENGINE_PILE *pile, ENGINE *e)-
139{-
140 int n;-
141-
142-
143 while ((
(n = sk_find((...NE*)0)))) >= 0Description
TRUEnever evaluated
FALSEnever evaluated
n = sk_find(((_STACK*) (1 ? (pile->sk) : (struct stack_st_ENGINE*)0)), ((void*) (1 ? (e) : (ENGINE*)0)))) >= 0
(n = sk_find((...NE*)0)))) >= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
144 (void)(ENGINE *)sk_delete(((_STACK*) (1 ? (pile->sk) : (struct stack_st_ENGINE*)0)), (n));-
145 pile->uptodate = 0;-
146 }
never executed: end of block
0
147 if (pile->funct == e
pile->funct == eDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
148 engine_unlocked_finish(e, 0);-
149 pile->funct = -
150 ((void *)0)-
151 ;-
152 }
never executed: end of block
0
153}
never executed: end of block
0
154static void int_unregister_cb_LHASH_DOALL_ARG(void *arg1, void *arg2) { ENGINE_PILE *a = arg1; ENGINE *b = arg2; int_unregister_cb_doall_arg(a, b); }
never executed: end of block
0
155-
156void-
157engine_table_unregister(ENGINE_TABLE **table, ENGINE *e)-
158{-
159 CRYPTO_lock(1|8,30,__FILE__,211);-
160 if (int_table_check(table, 0)
int_table_check(table, 0)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
161 lh_doall_arg(((_LHASH *)((void*) (1 ? &(*table)->piles : (struct lhash_st_ENGINE_PILE*)0))), int_unregister_cb_LHASH_DOALL_ARG, ((void*) (1 ? e : (ENGINE*)0)))
never executed: lh_doall_arg(((_LHASH *)((void*) (1 ? &(*table)->piles : (struct lhash_st_ENGINE_PILE*)0))), int_unregister_cb_LHASH_DOALL_ARG, ((void*) (1 ? e : (ENGINE*)0))) ;
0
162 ;
never executed: lh_doall_arg(((_LHASH *)((void*) (1 ? &(*table)->piles : (struct lhash_st_ENGINE_PILE*)0))), int_unregister_cb_LHASH_DOALL_ARG, ((void*) (1 ? e : (ENGINE*)0))) ;
0
163 CRYPTO_lock(2|8,30,__FILE__,215);-
164}
never executed: end of block
0
165-
166static void-
167int_cleanup_cb_doall(ENGINE_PILE *p)-
168{-
169 sk_free(((_STACK*) (1 ? (p->sk) : (struct stack_st_ENGINE*)0)));-
170 if (p->funct
p->functDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
171 engine_unlocked_finish(p->funct, 0);
never executed: engine_unlocked_finish(p->funct, 0);
0
172 free(p);-
173}
never executed: end of block
0
174static void int_cleanup_cb_LHASH_DOALL(void *arg) { ENGINE_PILE *a = arg; int_cleanup_cb_doall(a); }
never executed: end of block
0
175-
176void-
177engine_table_cleanup(ENGINE_TABLE **table)-
178{-
179 CRYPTO_lock(1|8,30,__FILE__,231);-
180 if (*
*tableDescription
TRUEnever evaluated
FALSEnever evaluated
table
*tableDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
181 lh_doall(((_LHASH *)((void*) (1 ? &(*table)->piles : (struct lhash_st_ENGINE_PILE*)0))), int_cleanup_cb_LHASH_DOALL)-
182 ;-
183 lh_free(((_LHASH *)((void*) (1 ? &(*table)->piles : (struct lhash_st_ENGINE_PILE*)0))));-
184 *table = -
185 ((void *)0)-
186 ;-
187 }
never executed: end of block
0
188 CRYPTO_lock(2|8,30,__FILE__,238);-
189}
never executed: end of block
0
190-
191-
192-
193ENGINE *-
194engine_table_select(ENGINE_TABLE **table, int nid)-
195-
196-
197-
198-
199{-
200 ENGINE *ret = -
201 ((void *)0)-
202 ;-
203 ENGINE_PILE tmplate, *fnd = -
204 ((void *)0)-
205 ;-
206 int initres, loop = 0;-
207-
208 if (!(*table)
!(*table)Description
TRUEevaluated 39539 times by 25 tests
Evaluated by:
  • asn1test
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • evptest
  • gost2814789t
  • hkdftest
  • hmactest
  • keypairtest
  • libcrypto.so.44.0.1
  • md4test
  • md5test
  • mont
  • pbkdf2
  • pkcs7test
  • rmdtest
  • rsa_test
  • servertest
  • sha1test
  • sha256test
  • sha512test
  • ssltest
  • tls_prf
  • tlstest
FALSEnever evaluated
) {
0-39539
209-
210-
211-
212-
213 return
executed 39539 times by 25 tests: return ((void *)0) ;
Executed by:
  • asn1test
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • evptest
  • gost2814789t
  • hkdftest
  • hmactest
  • keypairtest
  • libcrypto.so.44.0.1
  • md4test
  • md5test
  • mont
  • pbkdf2
  • pkcs7test
  • rmdtest
  • rsa_test
  • servertest
  • sha1test
  • sha256test
  • sha512test
  • ssltest
  • tls_prf
  • tlstest
executed 39539 times by 25 tests: return ((void *)0) ;
Executed by:
  • asn1test
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • evptest
  • gost2814789t
  • hkdftest
  • hmactest
  • keypairtest
  • libcrypto.so.44.0.1
  • md4test
  • md5test
  • mont
  • pbkdf2
  • pkcs7test
  • rmdtest
  • rsa_test
  • servertest
  • sha1test
  • sha256test
  • sha512test
  • ssltest
  • tls_prf
  • tlstest
39539
214 ((void *)0)
executed 39539 times by 25 tests: return ((void *)0) ;
Executed by:
  • asn1test
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • evptest
  • gost2814789t
  • hkdftest
  • hmactest
  • keypairtest
  • libcrypto.so.44.0.1
  • md4test
  • md5test
  • mont
  • pbkdf2
  • pkcs7test
  • rmdtest
  • rsa_test
  • servertest
  • sha1test
  • sha256test
  • sha512test
  • ssltest
  • tls_prf
  • tlstest
39539
215 ;
executed 39539 times by 25 tests: return ((void *)0) ;
Executed by:
  • asn1test
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • evptest
  • gost2814789t
  • hkdftest
  • hmactest
  • keypairtest
  • libcrypto.so.44.0.1
  • md4test
  • md5test
  • mont
  • pbkdf2
  • pkcs7test
  • rmdtest
  • rsa_test
  • servertest
  • sha1test
  • sha256test
  • sha512test
  • ssltest
  • tls_prf
  • tlstest
39539
216 }-
217 ERR_set_mark();-
218 CRYPTO_lock(1|8,30,__FILE__,262);-
219-
220-
221 if (!int_table_check(table, 0)
!int_table_check(table, 0)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
222 goto
never executed: goto end;
end;
never executed: goto end;
0
223 tmplate.nid = nid;-
224 fnd = ((ENGINE_PILE *)lh_retrieve(((_LHASH *)((void*) (1 ? &(*table)->piles : (struct lhash_st_ENGINE_PILE*)0))), ((void*) (1 ? &tmplate : (ENGINE_PILE*)0))));-
225 if (!fnd
!fndDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
226 goto
never executed: goto end;
end;
never executed: goto end;
0
227 if (fnd->funct
fnd->functDescription
TRUEnever evaluated
FALSEnever evaluated
&& engine_unlocked_init(fnd->funct)
engine_unlocke...it(fnd->funct)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
228-
229-
230-
231-
232 ret = fnd->funct;-
233 goto
never executed: goto end;
end;
never executed: goto end;
0
234 }-
235 if (fnd->uptodate
fnd->uptodateDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
236 ret = fnd->funct;-
237 goto
never executed: goto end;
end;
never executed: goto end;
0
238 }-
239trynext:
code before this statement never executed: trynext:
0
240 ret = ((ENGINE *)sk_value(((_STACK*) (1 ? (fnd->sk) : (struct stack_st_ENGINE*)0)), (loop++)));-
241 if (!ret
!retDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
242-
243-
244-
245-
246 goto
never executed: goto end;
end;
never executed: goto end;
0
247 }-
248-
249 if ((
(ret->funct_ref > 0)Description
TRUEnever evaluated
FALSEnever evaluated
ret->funct_ref > 0)
(ret->funct_ref > 0)Description
TRUEnever evaluated
FALSEnever evaluated
|| !(table_flags & (unsigned int)0x0001)
!(table_flags ...ed int)0x0001)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
250 initres = engine_unlocked_init(ret);
never executed: initres = engine_unlocked_init(ret);
0
251 else-
252 initres = 0;
never executed: initres = 0;
0
253 if (initres
initresDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
254-
255 if ((
(fnd->funct != ret)Description
TRUEnever evaluated
FALSEnever evaluated
fnd->funct != ret)
(fnd->funct != ret)Description
TRUEnever evaluated
FALSEnever evaluated
&& engine_unlocked_init(ret)
engine_unlocked_init(ret)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
256-
257 if (fnd->funct
fnd->functDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
258 engine_unlocked_finish(fnd->funct, 0);
never executed: engine_unlocked_finish(fnd->funct, 0);
0
259 fnd->funct = ret;-
260-
261-
262-
263-
264 }
never executed: end of block
0
265-
266-
267-
268-
269 goto
never executed: goto end;
end;
never executed: goto end;
0
270 }-
271 goto
never executed: goto trynext;
trynext;
never executed: goto trynext;
0
272end:-
273-
274-
275 if (fnd
fndDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
276 fnd->uptodate = 1;
never executed: fnd->uptodate = 1;
0
277 CRYPTO_lock(2|8,30,__FILE__,329);-
278-
279-
280 ERR_pop_to_mark();-
281 return
never executed: return ret;
ret;
never executed: return ret;
0
282}-
283-
284-
285-
286static void-
287int_cb_doall_arg(ENGINE_PILE *pile, ENGINE_PILE_DOALL *dall)-
288{-
289 dall->cb(pile->nid, pile->sk, pile->funct, dall->arg);-
290}
never executed: end of block
0
291static void int_cb_LHASH_DOALL_ARG(void *arg1, void *arg2) { ENGINE_PILE *a = arg1; ENGINE_PILE_DOALL *b = arg2; int_cb_doall_arg(a, b); }
never executed: end of block
0
292-
293void-
294engine_table_doall(ENGINE_TABLE *table, engine_table_doall_cb *cb, void *arg)-
295{-
296 ENGINE_PILE_DOALL dall;-
297-
298 dall.cb = cb;-
299 dall.arg = arg;-
300 lh_doall_arg(((_LHASH *)((void*) (1 ? &table->piles : (struct lhash_st_ENGINE_PILE*)0))), int_cb_LHASH_DOALL_ARG, ((void*) (1 ? &dall : (ENGINE_PILE_DOALL*)0)))-
301 ;-
302}
executed 2 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
2
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2