OpenCoverage

bss_acpt.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/bio/bss_acpt.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6typedef struct bio_accept_st {-
7 int state;-
8 char *param_addr;-
9-
10 int accept_sock;-
11 int accept_nbio;-
12-
13 char *addr;-
14 int nbio;-
15-
16-
17-
18 int bind_mode;-
19 BIO *bio_chain;-
20} BIO_ACCEPT;-
21-
22static int acpt_write(BIO *h, const char *buf, int num);-
23static int acpt_read(BIO *h, char *buf, int size);-
24static int acpt_puts(BIO *h, const char *str);-
25static long acpt_ctrl(BIO *h, int cmd, long arg1, void *arg2);-
26static int acpt_new(BIO *h);-
27static int acpt_free(BIO *data);-
28static int acpt_state(BIO *b, BIO_ACCEPT *c);-
29static void acpt_close_socket(BIO *data);-
30static BIO_ACCEPT *BIO_ACCEPT_new(void );-
31static void BIO_ACCEPT_free(BIO_ACCEPT *a);-
32-
33-
34-
35-
36-
37static const BIO_METHOD methods_acceptp = {-
38 .type = (13|0x0400|0x0100),-
39 .name = "socket accept",-
40 .bwrite = acpt_write,-
41 .bread = acpt_read,-
42 .bputs = acpt_puts,-
43 .ctrl = acpt_ctrl,-
44 .create = acpt_new,-
45 .destroy = acpt_free-
46};-
47-
48const BIO_METHOD *-
49BIO_s_accept(void)-
50{-
51 return
never executed: return (&methods_acceptp);
(&methods_acceptp);
never executed: return (&methods_acceptp);
0
52}-
53-
54static int-
55acpt_new(BIO *bi)-
56{-
57 BIO_ACCEPT *ba;-
58-
59 bi->init = 0;-
60 bi->num = -1;-
61 bi->flags = 0;-
62 if ((
(ba = BIO_ACCE...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ba = BIO_ACCEPT_new()) ==
(ba = BIO_ACCE...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
63 ((void *)0)
(ba = BIO_ACCE...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
64 )-
65 return
never executed: return (0);
(0);
never executed: return (0);
0
66 bi->ptr = (char *)ba;-
67 ba->state = 1;-
68 bi->shutdown = 1;-
69 return
never executed: return (1);
(1);
never executed: return (1);
0
70}-
71-
72static BIO_ACCEPT *-
73BIO_ACCEPT_new(void)-
74{-
75 BIO_ACCEPT *ret;-
76-
77 if ((
(ret = calloc(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret = calloc(1, sizeof(BIO_ACCEPT))) ==
(ret = calloc(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
78 ((void *)0)
(ret = calloc(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
79 )-
80 return
never executed: return ( ((void *)0) );
(
never executed: return ( ((void *)0) );
0
81 ((void *)0)
never executed: return ( ((void *)0) );
0
82 );
never executed: return ( ((void *)0) );
0
83 ret->accept_sock = -1;-
84 ret->bind_mode = 0;-
85 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
86}-
87-
88static void-
89BIO_ACCEPT_free(BIO_ACCEPT *a)-
90{-
91 if (a ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
92 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
93 )-
94 return;
never executed: return;
0
95-
96 free(a->param_addr);-
97 free(a->addr);-
98 BIO_free(a->bio_chain);-
99 free(a);-
100}
never executed: end of block
0
101-
102static void-
103acpt_close_socket(BIO *bio)-
104{-
105 BIO_ACCEPT *c;-
106-
107 c = (BIO_ACCEPT *)bio->ptr;-
108 if (c->accept_sock != -1
c->accept_sock != -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
109 shutdown(c->accept_sock, -
110 SHUT_RDWR-
111 );-
112 close(c->accept_sock);-
113 c->accept_sock = -1;-
114 bio->num = -1;-
115 }
never executed: end of block
0
116}
never executed: end of block
0
117-
118static int-
119acpt_free(BIO *a)-
120{-
121 BIO_ACCEPT *data;-
122-
123 if (a ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
124 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
125 )-
126 return
never executed: return (0);
(0);
never executed: return (0);
0
127 data = (BIO_ACCEPT *)a->ptr;-
128-
129 if (a->shutdown
a->shutdownDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
130 acpt_close_socket(a);-
131 BIO_ACCEPT_free(data);-
132 a->ptr = -
133 ((void *)0)-
134 ;-
135 a->flags = 0;-
136 a->init = 0;-
137 }
never executed: end of block
0
138 return
never executed: return (1);
(1);
never executed: return (1);
0
139}-
140-
141static int-
142acpt_state(BIO *b, BIO_ACCEPT *c)-
143{-
144 BIO *bio = -
145 ((void *)0)-
146 , *dbio;-
147 int s = -1;-
148 int i;-
149-
150again:
code before this statement never executed: again:
0
151 switch (c->state) {-
152 case
never executed: case 1:
1:
never executed: case 1:
0
153 if (c->param_addr ==
c->param_addr == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
154 ((void *)0)
c->param_addr == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
155 ) {-
156 ERR_put_error(32,(0xfff),(111),__FILE__,204);-
157 return
never executed: return (-1);
(-1);
never executed: return (-1);
0
158 }-
159 s = BIO_get_accept_socket(c->param_addr, c->bind_mode);-
160 if (s == -1
s == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
161 return
never executed: return (-1);
(-1);
never executed: return (-1);
0
162-
163 if (c->accept_nbio
c->accept_nbioDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
164 if (!BIO_socket_nbio(s, 1)
!BIO_socket_nbio(s, 1)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
165 close(s);-
166 ERR_put_error(32,(0xfff),(106),__FILE__,214);-
167 return
never executed: return (-1);
(-1);
never executed: return (-1);
0
168 }-
169 }
never executed: end of block
0
170 c->accept_sock = s;-
171 b->num = s;-
172 c->state = 2;-
173 return
never executed: return (1);
(1);
never executed: return (1);
0
174-
175 case
never executed: case 2:
2:
never executed: case 2:
0
176 if (b->next_bio !=
b->next_bio != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
177 ((void *)0)
b->next_bio != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
178 ) {-
179 c->state = 3;-
180 goto
never executed: goto again;
again;
never executed: goto again;
0
181 }-
182 BIO_clear_flags(b, ((0x01|0x02|0x04)|0x08));-
183 b->retry_reason = 0;-
184 i = BIO_accept(c->accept_sock, &(c->addr));-
185-
186-
187 if (i == -2
i == -2Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
188 BIO_set_flags(b, (0x04|0x08));-
189 b->retry_reason = 0x03;-
190 return
never executed: return -1;
-1;
never executed: return -1;
0
191 }-
192-
193 if (i < 0
i < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
194 return
never executed: return (i);
(i);
never executed: return (i);
0
195-
196 bio = BIO_new_socket(i, 0x01);-
197 if (bio ==
bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
198 ((void *)0)
bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
199 )-
200 goto
never executed: goto err;
err;
never executed: goto err;
0
201-
202 BIO_set_callback(bio, BIO_get_callback(b));-
203 BIO_set_callback_arg(bio, BIO_get_callback_arg(b));-
204-
205 if (c->nbio
c->nbioDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
206 if (!BIO_socket_nbio(i, 1)
!BIO_socket_nbio(i, 1)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
207 ERR_put_error(32,(0xfff),(105),__FILE__,251);-
208 goto
never executed: goto err;
err;
never executed: goto err;
0
209 }-
210 }
never executed: end of block
0
211-
212-
213-
214 if (c->bio_chain !=
c->bio_chain != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
215 ((void *)0)
c->bio_chain != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
216 ) {-
217 if ((
(dbio = BIO_du...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
dbio = BIO_dup_chain(c->bio_chain)) ==
(dbio = BIO_du...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
218 ((void *)0)
(dbio = BIO_du...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
219 )-
220 goto
never executed: goto err;
err;
never executed: goto err;
0
221 if (!BIO_push(dbio, bio)
!BIO_push(dbio, bio)Description
TRUEnever evaluated
FALSEnever evaluated
) goto
never executed: goto err;
err;
never executed: goto err;
0
222 bio = dbio;-
223 }
never executed: end of block
0
224 if (BIO_push(b, bio)
BIO_push(b, bi...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
225 ==
BIO_push(b, bi...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
226 ((void *)0)
BIO_push(b, bi...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
227 ) goto
never executed: goto err;
err;
never executed: goto err;
0
228-
229 c->state = 3;-
230 return
never executed: return (1);
(1);
never executed: return (1);
0
231-
232err:-
233 if (bio !=
bio != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
234 ((void *)0)
bio != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
235 )-
236 BIO_free(bio);
never executed: BIO_free(bio);
0
237 return
never executed: return (0);
(0);
never executed: return (0);
0
238-
239 case
never executed: case 3:
3:
never executed: case 3:
0
240 if (b->next_bio ==
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
241 ((void *)0)
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
242 ) {-
243 c->state = 2;-
244 goto
never executed: goto again;
again;
never executed: goto again;
0
245 }-
246 return
never executed: return (1);
(1);
never executed: return (1);
0
247-
248 default
never executed: default:
:
never executed: default:
0
249 return
never executed: return (0);
(0);
never executed: return (0);
0
250-
251 }-
252}-
253-
254static int-
255acpt_read(BIO *b, char *out, int outl)-
256{-
257 int ret = 0;-
258 BIO_ACCEPT *data;-
259-
260 BIO_clear_flags(b, ((0x01|0x02|0x04)|0x08));-
261 data = (BIO_ACCEPT *)b->ptr;-
262-
263 while (b->next_bio ==
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
264 ((void *)0)
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
265 ) {-
266 ret = acpt_state(b, data);-
267 if (ret <= 0
ret <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
268 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
269 }
never executed: end of block
0
270-
271 ret = BIO_read(b->next_bio, out, outl);-
272 BIO_copy_next_retry(b);-
273 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
274}-
275-
276static int-
277acpt_write(BIO *b, const char *in, int inl)-
278{-
279 int ret;-
280 BIO_ACCEPT *data;-
281-
282 BIO_clear_flags(b, ((0x01|0x02|0x04)|0x08));-
283 data = (BIO_ACCEPT *)b->ptr;-
284-
285 while (b->next_bio ==
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
286 ((void *)0)
b->next_bio == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
287 ) {-
288 ret = acpt_state(b, data);-
289 if (ret <= 0
ret <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
290 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
291 }
never executed: end of block
0
292-
293 ret = BIO_write(b->next_bio, in, inl);-
294 BIO_copy_next_retry(b);-
295 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
296}-
297-
298static long-
299acpt_ctrl(BIO *b, int cmd, long num, void *ptr)-
300{-
301 int *ip;-
302 long ret = 1;-
303 BIO_ACCEPT *data;-
304 char **pp;-
305-
306 data = (BIO_ACCEPT *)b->ptr;-
307-
308 switch (cmd) {-
309 case
never executed: case 1:
1:
never executed: case 1:
0
310 ret = 0;-
311 data->state = 1;-
312 acpt_close_socket(b);-
313 b->flags = 0;-
314 break;
never executed: break;
0
315 case
never executed: case 101:
101:
never executed: case 101:
0
316-
317 ret = (long)acpt_state(b, data);-
318 break;
never executed: break;
0
319 case
never executed: case 118:
118:
never executed: case 118:
0
320 if (ptr !=
ptr != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
321 ((void *)0)
ptr != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
322 ) {-
323 if (num == 0
num == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
324 b->init = 1;-
325 free(data->param_addr);-
326 data->param_addr = -
327 (__extension__ (__builtin_constant_p (
__builtin_constant_p ( ptr )Description
TRUEnever evaluated
FALSEnever evaluated
0
328 ptr
__builtin_constant_p ( ptr )Description
TRUEnever evaluated
FALSEnever evaluated
0
329 )
__builtin_constant_p ( ptr )Description
TRUEnever evaluated
FALSEnever evaluated
&& ((
((size_t)(cons...)( ptr ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
size_t)(const void *)((
((size_t)(cons...)( ptr ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
330 ptr
((size_t)(cons...)( ptr ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
331 ) + 1) - (size_t)(const void *)(
((size_t)(cons...)( ptr ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
332 ptr
((size_t)(cons...)( ptr ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
333 ) == 1)
((size_t)(cons...)( ptr ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
? (((const
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
char *) (
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0
334 ptr
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0
335 ))[0] == '\0'
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
? (char *) calloc ((size_t) 1, (size_t) 1) : ({ size_t __len = strlen (
0
336 ptr-
337 ) + 1; char *__retval = (char *) malloc (__len); if (__retval != ((void *)0)
__retval != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
) __retval = (char *) memcpy (__retval,
never executed: __retval = (char *) memcpy (__retval, ptr , __len);
0
338 ptr
never executed: __retval = (char *) memcpy (__retval, ptr , __len);
0
339 , __len);
never executed: __retval = (char *) memcpy (__retval, ptr , __len);
__retval; })) : __strdup (
0
340 ptr-
341 )))-
342 ;-
343 }
never executed: end of block
else if (num == 1
num == 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
344 data->accept_nbio = (ptr != -
345 ((void *)0)-
346 );-
347 }
never executed: end of block
else if (num == 2
num == 2Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
348 BIO_free(data->bio_chain);-
349 data->bio_chain = (BIO *)ptr;-
350 }
never executed: end of block
0
351 }
never executed: end of block
0
352 break;
never executed: break;
0
353 case
never executed: case 102:
102:
never executed: case 102:
0
354 data->nbio = (int)num;-
355 break;
never executed: break;
0
356 case
never executed: case 104:
104:
never executed: case 104:
0
357 b->init = 1;-
358 b->num= *((int *)ptr);-
359 data->accept_sock = b->num;-
360 data->state = 2;-
361 b->shutdown = (int)num;-
362 b->init = 1;-
363 break;
never executed: break;
0
364 case
never executed: case 105:
105:
never executed: case 105:
0
365 if (b->init
b->initDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
366 ip = (int *)ptr;-
367 if (ip !=
ip != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
368 ((void *)0)
ip != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
369 )-
370 *
never executed: *ip = data->accept_sock;
ip = data->accept_sock;
never executed: *ip = data->accept_sock;
0
371 ret = data->accept_sock;-
372 }
never executed: end of block
else
0
373 ret = -1;
never executed: ret = -1;
0
374 break;
never executed: break;
0
375 case
never executed: case 124:
124:
never executed: case 124:
0
376 if (b->init
b->initDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
377 if (ptr !=
ptr != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
378 ((void *)0)
ptr != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
379 ) {-
380 pp = (char **)ptr;-
381 *pp = data->param_addr;-
382 }
never executed: end of block
else
0
383 ret = -1;
never executed: ret = -1;
0
384 } else-
385 ret = -1;
never executed: ret = -1;
0
386 break;
never executed: break;
0
387 case
never executed: case 8:
8:
never executed: case 8:
0
388 ret = b->shutdown;-
389 break;
never executed: break;
0
390 case
never executed: case 9:
9:
never executed: case 9:
0
391 b->shutdown = (int)num;-
392 break;
never executed: break;
0
393 case
never executed: case 10:
10:
never executed: case 10:
0
394 case
never executed: case 13:
13:
never executed: case 13:
0
395 ret = 0;-
396 break;
never executed: break;
0
397 case
never executed: case 11:
11:
never executed: case 11:
0
398 break;
never executed: break;
0
399 case
never executed: case 131:
131:
never executed: case 131:
0
400 data->bind_mode = (int)num;-
401 break;
never executed: break;
0
402 case
never executed: case 132:
132:
never executed: case 132:
0
403 ret = (long)data->bind_mode;-
404 break;
never executed: break;
0
405 case
never executed: case 12:
12:
never executed: case 12:
0
406-
407-
408-
409-
410-
411-
412-
413 break;
never executed: break;
0
414-
415 default
never executed: default:
:
never executed: default:
0
416 ret = 0;-
417 break;
never executed: break;
0
418 }-
419 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
420}-
421-
422static int-
423acpt_puts(BIO *bp, const char *str)-
424{-
425 int n, ret;-
426-
427 n = strlen(str);-
428 ret = acpt_write(bp, str, n);-
429 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
430}-
431-
432BIO *-
433BIO_new_accept(const char *str)-
434{-
435 BIO *ret;-
436-
437 ret = BIO_new(BIO_s_accept());-
438 if (ret ==
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
439 ((void *)0)
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
440 )-
441 return
never executed: return ( ((void *)0) );
(
never executed: return ( ((void *)0) );
0
442 ((void *)0)
never executed: return ( ((void *)0) );
0
443 );
never executed: return ( ((void *)0) );
0
444 if (BIO_ctrl(ret,118,0,(char *)str)
BIO_ctrl(ret,1...0,(char *)str)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
445 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
446 else {-
447 BIO_free(ret);-
448 return
never executed: return ( ((void *)0) );
(
never executed: return ( ((void *)0) );
0
449 ((void *)0)
never executed: return ( ((void *)0) );
0
450 );
never executed: return ( ((void *)0) );
0
451 }-
452}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2