OpenCoverage

bss_dgram.c

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

Generated by Squish Coco 4.2.2