OpenCoverage

bss_dgram.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/bio/bss_dgram.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9static int dgram_write(BIO *h, const char *buf, int num);-
10static int dgram_read(BIO *h, char *buf, int size);-
11static int dgram_puts(BIO *h, const char *str);-
12static long dgram_ctrl(BIO *h, int cmd, long arg1, void *arg2);-
13static int dgram_new(BIO *h);-
14static int dgram_free(BIO *data);-
15static int dgram_clear(BIO *bio);-
16-
17-
18static int BIO_dgram_should_retry(int s);-
19-
20static const BIO_METHOD methods_dgramp = {-
21 .type = (21|0x0400|0x0100),-
22 .name = "datagram socket",-
23 .bwrite = dgram_write,-
24 .bread = dgram_read,-
25 .bputs = dgram_puts,-
26 .ctrl = dgram_ctrl,-
27 .create = dgram_new,-
28 .destroy = dgram_free-
29};-
30-
31-
32typedef struct bio_dgram_data_st {-
33 union {-
34 struct sockaddr sa;-
35 struct sockaddr_in sa_in;-
36 struct sockaddr_in6 sa_in6;-
37 } peer;-
38 unsigned int connected;-
39 unsigned int _errno;-
40 unsigned int mtu;-
41 struct timeval next_timeout;-
42 struct timeval socket_timeout;-
43} bio_dgram_data;-
44-
45-
46const BIO_METHOD *-
47BIO_s_datagram(void)-
48{-
49 return
never executed: return (&methods_dgramp);
(&methods_dgramp);
never executed: return (&methods_dgramp);
0
50}-
51-
52BIO *-
53BIO_new_dgram(int fd, int close_flag)-
54{-
55 BIO *ret;-
56-
57 ret = BIO_new(BIO_s_datagram());-
58 if (ret ==
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
59 ((void *)0)
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
60 )-
61 return
never executed: return ( ((void *)0) );
(
never executed: return ( ((void *)0) );
0
62 ((void *)0)
never executed: return ( ((void *)0) );
0
63 );
never executed: return ( ((void *)0) );
0
64 BIO_int_ctrl(ret,104,close_flag,fd);-
65 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
66}-
67-
68static int-
69dgram_new(BIO *bi)-
70{-
71 bio_dgram_data *data = -
72 ((void *)0)-
73 ;-
74-
75 bi->init = 0;-
76 bi->num = 0;-
77 data = calloc(1, sizeof(bio_dgram_data));-
78 if (data ==
data == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
79 ((void *)0)
data == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
80 )-
81 return
never executed: return 0;
0;
never executed: return 0;
0
82 bi->ptr = data;-
83-
84 bi->flags = 0;-
85 return
never executed: return (1);
(1);
never executed: return (1);
0
86}-
87-
88static int-
89dgram_free(BIO *a)-
90{-
91 bio_dgram_data *data;-
92-
93 if (a ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
94 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
95 )-
96 return
never executed: return (0);
(0);
never executed: return (0);
0
97 if (!dgram_clear(a)
!dgram_clear(a)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
98 return
never executed: return 0;
0;
never executed: return 0;
0
99-
100 data = (bio_dgram_data *)a->ptr;-
101 free(data);-
102-
103 return
never executed: return (1);
(1);
never executed: return (1);
0
104}-
105-
106static int-
107dgram_clear(BIO *a)-
108{-
109 if (a ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
110 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
111 )-
112 return
never executed: return (0);
(0);
never executed: return (0);
0
113 if (a->shutdown
a->shutdownDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
114 if (a->init
a->initDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
115 shutdown(a->num, -
116 SHUT_RDWR-
117 );-
118 close(a->num);-
119 }
never executed: end of block
0
120 a->init = 0;-
121 a->flags = 0;-
122 }
never executed: end of block
0
123 return
never executed: return (1);
(1);
never executed: return (1);
0
124}-
125-
126static void-
127dgram_adjust_rcv_timeout(BIO *b)-
128{-
129-
130 bio_dgram_data *data = (bio_dgram_data *)b->ptr;-
131-
132-
133 if (data->next_timeout.tv_sec > 0
data->next_timeout.tv_sec > 0Description
TRUEnever evaluated
FALSEnever evaluated
|| data->next_timeout.tv_usec > 0
data->next_timeout.tv_usec > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
134 struct timeval timenow, timeleft;-
135-
136-
137 socklen_t sz = sizeof(data->socket_timeout);-
138 if (getsockopt(b->num,
getsockopt(b->...out), &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
139 1
getsockopt(b->...out), &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
140 ,
getsockopt(b->...out), &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
141 20
getsockopt(b->...out), &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
142 ,
getsockopt(b->...out), &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
143 &(data->socket_timeout), &sz) < 0
getsockopt(b->...out), &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
144 perror("getsockopt");-
145 }
never executed: end of block
0
146-
147-
148 gettimeofday(&timenow, -
149 ((void *)0)-
150 );-
151-
152-
153 memcpy(&timeleft, &(data->next_timeout), sizeof(struct timeval));-
154 timeleft.tv_sec -= timenow.tv_sec;-
155 timeleft.tv_usec -= timenow.tv_usec;-
156 if (timeleft.tv_usec < 0
timeleft.tv_usec < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
157 timeleft.tv_sec--;-
158 timeleft.tv_usec += 1000000;-
159 }
never executed: end of block
0
160-
161 if (timeleft.tv_sec < 0
timeleft.tv_sec < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
162 timeleft.tv_sec = 0;-
163 timeleft.tv_usec = 1;-
164 }
never executed: end of block
0
165-
166-
167-
168-
169 if ((data->socket_timeout.tv_sec == 0
data->socket_t...ut.tv_sec == 0Description
TRUEnever evaluated
FALSEnever evaluated
&&
0
170 data->socket_timeout.tv_usec == 0
data->socket_t...t.tv_usec == 0Description
TRUEnever evaluated
FALSEnever evaluated
) ||
0
171 (
(data->socket_...meleft.tv_sec)Description
TRUEnever evaluated
FALSEnever evaluated
data->socket_timeout.tv_sec > timeleft.tv_sec)
(data->socket_...meleft.tv_sec)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
172 (data->socket_timeout.tv_sec == timeleft.tv_sec
data->socket_t...imeleft.tv_secDescription
TRUEnever evaluated
FALSEnever evaluated
&&
0
173 data->socket_timeout.tv_usec >= timeleft.tv_usec
data->socket_t...meleft.tv_usecDescription
TRUEnever evaluated
FALSEnever evaluated
)) {
0
174 if (setsockopt(b->num,
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
175 1
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
176 ,
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
177 20
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
178 ,
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
179 &timeleft, sizeof(struct timeval)) < 0
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
180 perror("setsockopt");-
181 }
never executed: end of block
0
182 }
never executed: end of block
0
183 }
never executed: end of block
0
184-
185}
never executed: end of block
0
186-
187static void-
188dgram_reset_rcv_timeout(BIO *b)-
189{-
190-
191 bio_dgram_data *data = (bio_dgram_data *)b->ptr;-
192-
193-
194 if (data->next_timeout.tv_sec > 0
data->next_timeout.tv_sec > 0Description
TRUEnever evaluated
FALSEnever evaluated
|| data->next_timeout.tv_usec > 0
data->next_timeout.tv_usec > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
195 if (setsockopt(b->num,
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
196 1
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
197 ,
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
198 20
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
199 ,
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
200 &(data->socket_timeout), sizeof(struct timeval)) < 0
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
201 perror("setsockopt");-
202 }
never executed: end of block
0
203 }
never executed: end of block
0
204-
205}
never executed: end of block
0
206-
207static int-
208dgram_read(BIO *b, char *out, int outl)-
209{-
210 int ret = 0;-
211 bio_dgram_data *data = (bio_dgram_data *)b->ptr;-
212-
213 struct {-
214 socklen_t len;-
215 union {-
216 struct sockaddr sa;-
217 struct sockaddr_in sa_in;-
218 struct sockaddr_in6 sa_in6;-
219 } peer;-
220 } sa;-
221-
222 sa.len = sizeof(sa.peer);-
223-
224 if (out !=
out != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
225 ((void *)0)
out != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
226 ) {-
227 -
228 (*__errno_location ()) -
229 = 0;-
230 memset(&sa.peer, 0, sizeof(sa.peer));-
231 dgram_adjust_rcv_timeout(b);-
232 ret = recvfrom(b->num, out, outl, 0, &sa.peer.sa, &sa.len);-
233-
234 if (! data->connected
! data->connectedDescription
TRUEnever evaluated
FALSEnever evaluated
&& ret >= 0
ret >= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
235 BIO_ctrl(b, 44, 0, &sa.peer);
never executed: BIO_ctrl(b, 44, 0, &sa.peer);
0
236-
237 BIO_clear_flags(b, ((0x01|0x02|0x04)|0x08));-
238 if (ret < 0
ret < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
239 if (BIO_dgram_should_retry(ret)
BIO_dgram_should_retry(ret)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
240 BIO_set_flags(b, (0x01|0x08));-
241 data->_errno = -
242 (*__errno_location ())-
243 ;-
244 }
never executed: end of block
0
245 }
never executed: end of block
0
246-
247 dgram_reset_rcv_timeout(b);-
248 }
never executed: end of block
0
249 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
250}-
251-
252static int-
253dgram_write(BIO *b, const char *in, int inl)-
254{-
255 int ret;-
256 bio_dgram_data *data = (bio_dgram_data *)b->ptr;-
257 -
258(*__errno_location ()) -
259 = 0;-
260-
261 if (data->connected
data->connectedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
262 ret = write(b->num, in, inl);
never executed: ret = write(b->num, in, inl);
0
263 else {-
264 int peerlen = sizeof(data->peer);-
265-
266 if (data->peer.sa.sa_family ==
data->peer.sa.sa_family == 2Description
TRUEnever evaluated
FALSEnever evaluated
0
267 2
data->peer.sa.sa_family == 2Description
TRUEnever evaluated
FALSEnever evaluated
0
268 )-
269 peerlen = sizeof(data->peer.sa_in);
never executed: peerlen = sizeof(data->peer.sa_in);
0
270 else if (data->peer.sa.sa_family ==
data->peer.sa.sa_family == 10Description
TRUEnever evaluated
FALSEnever evaluated
0
271 10
data->peer.sa.sa_family == 10Description
TRUEnever evaluated
FALSEnever evaluated
0
272 )-
273 peerlen = sizeof(data->peer.sa_in6);
never executed: peerlen = sizeof(data->peer.sa_in6);
0
274 ret = sendto(b->num, in, inl, 0, &data->peer.sa, peerlen);-
275 }
never executed: end of block
0
276-
277 BIO_clear_flags(b, ((0x01|0x02|0x04)|0x08));-
278 if (ret <= 0
ret <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
279 if (BIO_dgram_should_retry(ret)
BIO_dgram_should_retry(ret)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
280 BIO_set_flags(b, (0x02|0x08));-
281-
282 data->_errno = -
283 (*__errno_location ())-
284 ;-
285-
286-
287-
288-
289 }
never executed: end of block
0
290 }
never executed: end of block
0
291 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
292}-
293-
294static long-
295dgram_ctrl(BIO *b, int cmd, long num, void *ptr)-
296{-
297 long ret = 1;-
298 int *ip;-
299 struct sockaddr *to = -
300 ((void *)0)-
301 ;-
302 bio_dgram_data *data = -
303 ((void *)0)-
304 ;-
305-
306 int sockopt_val = 0;-
307 socklen_t sockopt_len;-
308-
309 socklen_t addr_len;-
310 union {-
311 struct sockaddr sa;-
312 struct sockaddr_in s4;-
313 struct sockaddr_in6 s6;-
314 } addr;-
315-
316-
317 data = (bio_dgram_data *)b->ptr;-
318-
319 switch (cmd) {-
320 case
never executed: case 1:
1:
never executed: case 1:
0
321 num = 0;-
322 case
never executed: case 128:
128:
never executed: case 128:
code before this statement never executed: case 128:
0
323 ret = 0;-
324 break;
never executed: break;
0
325 case
never executed: case 133:
133:
never executed: case 133:
0
326 case
never executed: case 3:
3:
never executed: case 3:
0
327 ret = 0;-
328 break;
never executed: break;
0
329 case
never executed: case 104:
104:
never executed: case 104:
0
330 dgram_clear(b);-
331 b->num= *((int *)ptr);-
332 b->shutdown = (int)num;-
333 b->init = 1;-
334 break;
never executed: break;
0
335 case
never executed: case 105:
105:
never executed: case 105:
0
336 if (b->init
b->initDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
337 ip = (int *)ptr;-
338 if (ip !=
ip != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
339 ((void *)0)
ip != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
340 )-
341 *
never executed: *ip = b->num;
ip = b->num;
never executed: *ip = b->num;
0
342 ret = b->num;-
343 }
never executed: end of block
else
0
344 ret = -1;
never executed: ret = -1;
0
345 break;
never executed: break;
0
346 case
never executed: case 8:
8:
never executed: case 8:
0
347 ret = b->shutdown;-
348 break;
never executed: break;
0
349 case
never executed: case 9:
9:
never executed: case 9:
0
350 b->shutdown = (int)num;-
351 break;
never executed: break;
0
352 case
never executed: case 10:
10:
never executed: case 10:
0
353 case
never executed: case 13:
13:
never executed: case 13:
0
354 ret = 0;-
355 break;
never executed: break;
0
356 case
never executed: case 12:
12:
never executed: case 12:
0
357 case
never executed: case 11:
11:
never executed: case 11:
0
358 ret = 1;-
359 break;
never executed: break;
0
360 case
never executed: case 31:
31:
never executed: case 31:
0
361 to = (struct sockaddr *)ptr;-
362 switch (to->sa_family) {-
363 case
never executed: case 2 :
never executed: case 2 :
0
364 2
never executed: case 2 :
0
365 :
never executed: case 2 :
0
366 memcpy(&data->peer, to, sizeof(data->peer.sa_in));-
367 break;
never executed: break;
0
368 case
never executed: case 10 :
never executed: case 10 :
0
369 10
never executed: case 10 :
0
370 :
never executed: case 10 :
0
371 memcpy(&data->peer, to, sizeof(data->peer.sa_in6));-
372 break;
never executed: break;
0
373 default
never executed: default:
:
never executed: default:
0
374 memcpy(&data->peer, to, sizeof(data->peer.sa));-
375 break;
never executed: break;
0
376 }-
377 break;
never executed: break;
0
378-
379 case
never executed: case 39:
39:
never executed: case 39:
0
380-
381 addr_len = (socklen_t)sizeof(addr);-
382 memset((void *)&addr, 0, sizeof(addr));-
383 if (getsockname(b->num, &addr.sa, &addr_len) < 0
getsockname(b-...&addr_len) < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
384 ret = 0;-
385 break;
never executed: break;
0
386 }-
387 switch (addr.sa.sa_family) {-
388 case
never executed: case 2 :
never executed: case 2 :
0
389 2
never executed: case 2 :
0
390 :
never executed: case 2 :
0
391 sockopt_val = -
392 2-
393 ;-
394 ret = setsockopt(b->num, -
395 IPPROTO_IP-
396 , -
397 10-
398 ,-
399 &sockopt_val, sizeof(sockopt_val));-
400 if (ret < 0
ret < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
401 perror("setsockopt");
never executed: perror("setsockopt");
0
402 break;
never executed: break;
0
403-
404 case
never executed: case 10 :
never executed: case 10 :
0
405 10
never executed: case 10 :
0
406 :
never executed: case 10 :
0
407 sockopt_val = -
408 2-
409 ;-
410 ret = setsockopt(b->num, -
411 IPPROTO_IPV6-
412 ,-
413 -
414 23-
415 , &sockopt_val,-
416 sizeof(sockopt_val));-
417 if (ret < 0
ret < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
418 perror("setsockopt");
never executed: perror("setsockopt");
0
419 break;
never executed: break;
0
420-
421 default
never executed: default:
:
never executed: default:
0
422 ret = -1;-
423 break;
never executed: break;
0
424 }-
425-
426-
427-
428 break;
never executed: break;
0
429 case
never executed: case 40:
40:
never executed: case 40:
0
430-
431 addr_len = (socklen_t)sizeof(addr);-
432 memset((void *)&addr, 0, sizeof(addr));-
433 if (getsockname(b->num, &addr.sa, &addr_len) < 0
getsockname(b-...&addr_len) < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
434 ret = 0;-
435 break;
never executed: break;
0
436 }-
437 sockopt_len = sizeof(sockopt_val);-
438 switch (addr.sa.sa_family) {-
439 case
never executed: case 2 :
never executed: case 2 :
0
440 2
never executed: case 2 :
0
441 :
never executed: case 2 :
0
442 ret = getsockopt(b->num, -
443 IPPROTO_IP-
444 , -
445 14-
446 ,-
447 &sockopt_val, &sockopt_len);-
448 if (ret < 0
ret < 0Description
TRUEnever evaluated
FALSEnever evaluated
|| sockopt_val < 0
sockopt_val < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
449 ret = 0;-
450 }
never executed: end of block
else {
0
451-
452-
453-
454 data->mtu = sockopt_val - 8 - 20;-
455 ret = data->mtu;-
456 }
never executed: end of block
0
457 break;
never executed: break;
0
458-
459 case
never executed: case 10 :
never executed: case 10 :
0
460 10
never executed: case 10 :
0
461 :
never executed: case 10 :
0
462 ret = getsockopt(b->num, -
463 IPPROTO_IPV6-
464 , -
465 24-
466 ,-
467 &sockopt_val, &sockopt_len);-
468 if (ret < 0
ret < 0Description
TRUEnever evaluated
FALSEnever evaluated
|| sockopt_val < 0
sockopt_val < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
469 ret = 0;-
470 }
never executed: end of block
else {
0
471-
472-
473-
474 data->mtu = sockopt_val - 8 - 40;-
475 ret = data->mtu;-
476 }
never executed: end of block
0
477 break;
never executed: break;
0
478-
479default
never executed: default:
:
never executed: default:
0
480 ret = 0;-
481 break;
never executed: break;
0
482 }-
483-
484-
485-
486 break;
never executed: break;
0
487 case
never executed: case 47:
47:
never executed: case 47:
0
488 switch (data->peer.sa.sa_family) {-
489 case
never executed: case 2 :
never executed: case 2 :
0
490 2
never executed: case 2 :
0
491 :
never executed: case 2 :
0
492 ret = 576 - 20 - 8;-
493 break;
never executed: break;
0
494 case
never executed: case 10 :
never executed: case 10 :
0
495 10
never executed: case 10 :
0
496 :
never executed: case 10 :
0
497-
498 if (-
499 (
(__extension__... (0xffff); }))Description
TRUEnever evaluated
FALSEnever evaluated
__extension__ ({ const struct in6_addr *__a = (const struct in6_addr *) (
(__extension__... (0xffff); }))Description
TRUEnever evaluated
FALSEnever evaluated
0
500 &data->peer.sa_in6.sin6_addr
(__extension__... (0xffff); }))Description
TRUEnever evaluated
FALSEnever evaluated
0
501 ); __a->__in6_u.__u6_addr32[0] == 0 && __a->__in6_u.__u6_addr32[1] == 0 && __a->__in6_u.__u6_addr32[2] == __bswap_32 (0xffff); }))
(__extension__... (0xffff); }))Description
TRUEnever evaluated
FALSEnever evaluated
0
502 )-
503 ret = 576 - 20 - 8;
never executed: ret = 576 - 20 - 8;
0
504 else-
505-
506 ret = 1280 - 40 - 8;
never executed: ret = 1280 - 40 - 8;
0
507 break;
never executed: break;
0
508 default
never executed: default:
:
never executed: default:
0
509 ret = 576 - 20 - 8;-
510 break;
never executed: break;
0
511 }-
512 break;
never executed: break;
0
513 case
never executed: case 41:
41:
never executed: case 41:
0
514 return
never executed: return data->mtu;
data->mtu;
never executed: return data->mtu;
0
515 break;
dead code: break;
-
516 case
never executed: case 42:
42:
never executed: case 42:
0
517 data->mtu = num;-
518 ret = num;-
519 break;
never executed: break;
0
520 case
never executed: case 32:
32:
never executed: case 32:
0
521 to = (struct sockaddr *)ptr;-
522-
523 if (to !=
to != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
524 ((void *)0)
to != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
525 ) {-
526 data->connected = 1;-
527 switch (to->sa_family) {-
528 case
never executed: case 2 :
never executed: case 2 :
0
529 2
never executed: case 2 :
0
530 :
never executed: case 2 :
0
531 memcpy(&data->peer, to, sizeof(data->peer.sa_in));-
532 break;
never executed: break;
0
533 case
never executed: case 10 :
never executed: case 10 :
0
534 10
never executed: case 10 :
0
535 :
never executed: case 10 :
0
536 memcpy(&data->peer, to, sizeof(data->peer.sa_in6));-
537 break;
never executed: break;
0
538 default
never executed: default:
:
never executed: default:
0
539 memcpy(&data->peer, to, sizeof(data->peer.sa));-
540 break;
never executed: break;
0
541 }-
542 } else {-
543 data->connected = 0;-
544 memset(&(data->peer), 0, sizeof(data->peer));-
545 }
never executed: end of block
0
546 break;
never executed: break;
0
547 case
never executed: case 46:
46:
never executed: case 46:
0
548 switch (data->peer.sa.sa_family) {-
549 case
never executed: case 2 :
never executed: case 2 :
0
550 2
never executed: case 2 :
0
551 :
never executed: case 2 :
0
552 ret = sizeof(data->peer.sa_in);-
553 break;
never executed: break;
0
554 case
never executed: case 10 :
never executed: case 10 :
0
555 10
never executed: case 10 :
0
556 :
never executed: case 10 :
0
557 ret = sizeof(data->peer.sa_in6);-
558 break;
never executed: break;
0
559 default
never executed: default:
:
never executed: default:
0
560 ret = sizeof(data->peer.sa);-
561 break;
never executed: break;
0
562 }-
563 if (num == 0
num == 0Description
TRUEnever evaluated
FALSEnever evaluated
|| num > ret
num > retDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
564 num = ret;
never executed: num = ret;
0
565 memcpy(ptr, &data->peer, (ret = num));-
566 break;
never executed: break;
0
567 case
never executed: case 44:
44:
never executed: case 44:
0
568 to = (struct sockaddr *) ptr;-
569 switch (to->sa_family) {-
570 case
never executed: case 2 :
never executed: case 2 :
0
571 2
never executed: case 2 :
0
572 :
never executed: case 2 :
0
573 memcpy(&data->peer, to, sizeof(data->peer.sa_in));-
574 break;
never executed: break;
0
575 case
never executed: case 10 :
never executed: case 10 :
0
576 10
never executed: case 10 :
0
577 :
never executed: case 10 :
0
578 memcpy(&data->peer, to, sizeof(data->peer.sa_in6));-
579 break;
never executed: break;
0
580 default
never executed: default:
:
never executed: default:
0
581 memcpy(&data->peer, to, sizeof(data->peer.sa));-
582 break;
never executed: break;
0
583 }-
584 break;
never executed: break;
0
585 case
never executed: case 45:
45:
never executed: case 45:
0
586 memcpy(&(data->next_timeout), ptr, sizeof(struct timeval));-
587 break;
never executed: break;
0
588-
589 case
never executed: case 33:
33:
never executed: case 33:
0
590 if (setsockopt(b->num,
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
591 1
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
592 ,
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
593 20
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
594 , ptr,
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
595 sizeof(struct timeval)) < 0
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
596 perror("setsockopt");-
597 ret = -1;-
598 }
never executed: end of block
0
599 break;
never executed: break;
0
600 case
never executed: case 34:
34:
never executed: case 34:
0
601 {-
602 socklen_t sz = sizeof(struct timeval);-
603 if (getsockopt(b->num,
getsockopt(b->... ptr, &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
604 1
getsockopt(b->... ptr, &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
605 ,
getsockopt(b->... ptr, &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
606 20
getsockopt(b->... ptr, &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
607 ,
getsockopt(b->... ptr, &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
608 ptr, &sz) < 0
getsockopt(b->... ptr, &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
609 perror("getsockopt");-
610 ret = -1;-
611 }
never executed: end of block
else
0
612 ret = sz;
never executed: ret = sz;
0
613 }-
614 break;
never executed: break;
0
615-
616-
617 case
never executed: case 35:
35:
never executed: case 35:
0
618 if (setsockopt(b->num,
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
619 1
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
620 ,
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
621 21
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
622 , ptr,
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
623 sizeof(struct timeval)) < 0
setsockopt(b->... timeval)) < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
624 perror("setsockopt");-
625 ret = -1;-
626 }
never executed: end of block
0
627 break;
never executed: break;
0
628 case
never executed: case 36:
36:
never executed: case 36:
0
629 {-
630 socklen_t sz = sizeof(struct timeval);-
631 if (getsockopt(b->num,
getsockopt(b->... ptr, &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
632 1
getsockopt(b->... ptr, &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
633 ,
getsockopt(b->... ptr, &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
634 21
getsockopt(b->... ptr, &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
635 ,
getsockopt(b->... ptr, &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
636 ptr, &sz) < 0
getsockopt(b->... ptr, &sz) < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
637 perror("getsockopt");-
638 ret = -1;-
639 }
never executed: end of block
else
0
640 ret = sz;
never executed: ret = sz;
0
641 }-
642 break;
never executed: break;
0
643-
644 case
never executed: case 38:
38:
never executed: case 38:
0
645-
646 case
never executed: case 37:
37:
never executed: case 37:
0
647 if (data->_errno ==
data->_errno == 11Description
TRUEnever evaluated
FALSEnever evaluated
0
648 11
data->_errno == 11Description
TRUEnever evaluated
FALSEnever evaluated
0
649 ) {-
650 ret = 1;-
651 data->_errno = 0;-
652 }
never executed: end of block
else
0
653 ret = 0;
never executed: ret = 0;
0
654 break;
never executed: break;
0
655-
656 case
never executed: case 43:
43:
never executed: case 43:
0
657 if (data->_errno ==
data->_errno == 90Description
TRUEnever evaluated
FALSEnever evaluated
0
658 90
data->_errno == 90Description
TRUEnever evaluated
FALSEnever evaluated
0
659 ) {-
660 ret = 1;-
661 data->_errno = 0;-
662 }
never executed: end of block
else
0
663 ret = 0;
never executed: ret = 0;
0
664 break;
never executed: break;
0
665-
666 default
never executed: default:
:
never executed: default:
0
667 ret = 0;-
668 break;
never executed: break;
0
669 }-
670 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
671}-
672-
673static int-
674dgram_puts(BIO *bp, const char *str)-
675{-
676 int n, ret;-
677-
678 n = strlen(str);-
679 ret = dgram_write(bp, str, n);-
680 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
681}-
682-
683-
684static int-
685BIO_dgram_should_retry(int i)-
686{-
687 int err;-
688-
689 if ((
(i == 0)Description
TRUEnever evaluated
FALSEnever evaluated
i == 0)
(i == 0)Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(i == -1)Description
TRUEnever evaluated
FALSEnever evaluated
i == -1)
(i == -1)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
690 err = -
691 (*__errno_location ())-
692 ;-
693 return
never executed: return (BIO_dgram_non_fatal_error(err));
(BIO_dgram_non_fatal_error(err));
never executed: return (BIO_dgram_non_fatal_error(err));
0
694 }-
695 return
never executed: return (0);
(0);
never executed: return (0);
0
696}-
697-
698int-
699BIO_dgram_non_fatal_error(int err)-
700{-
701 switch (err) {-
702 case
never executed: case 4 :
never executed: case 4 :
0
703 4
never executed: case 4 :
0
704 :
never executed: case 4 :
0
705 case
never executed: case 11 :
never executed: case 11 :
0
706 11
never executed: case 11 :
0
707 :
never executed: case 11 :
0
708 case
never executed: case 115 :
never executed: case 115 :
0
709 115
never executed: case 115 :
0
710 :
never executed: case 115 :
0
711 case
never executed: case 114 :
never executed: case 114 :
0
712 114
never executed: case 114 :
0
713 :
never executed: case 114 :
0
714 return
never executed: return (1);
(1);
never executed: return (1);
0
715 default
never executed: default:
:
never executed: default:
0
716 break;
never executed: break;
0
717 }-
718 return
never executed: return (0);
(0);
never executed: return (0);
0
719}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2