Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/bio/bss_dgram.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||
2 | static int dgram_write(BIO *h, const char *buf, int num); | - | ||||||||||||||||||||||||
3 | static int dgram_read(BIO *h, char *buf, int size); | - | ||||||||||||||||||||||||
4 | static int dgram_puts(BIO *h, const char *str); | - | ||||||||||||||||||||||||
5 | static long dgram_ctrl(BIO *h, int cmd, long arg1, void *arg2); | - | ||||||||||||||||||||||||
6 | static int dgram_new(BIO *h); | - | ||||||||||||||||||||||||
7 | static int dgram_free(BIO *data); | - | ||||||||||||||||||||||||
8 | static int dgram_clear(BIO *bio); | - | ||||||||||||||||||||||||
9 | static int BIO_dgram_should_retry(int s); | - | ||||||||||||||||||||||||
10 | - | |||||||||||||||||||||||||
11 | static void get_current_time(struct timeval *t); | - | ||||||||||||||||||||||||
12 | - | |||||||||||||||||||||||||
13 | static 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 | }; | - | ||||||||||||||||||||||||
33 | typedef 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; | - | ||||||||||||||||||||||||
42 | const BIO_METHOD *BIO_s_datagram(void) | - | ||||||||||||||||||||||||
43 | { | - | ||||||||||||||||||||||||
44 | return never executed: &methods_dgramp;return &methods_dgramp; never executed: return &methods_dgramp; | 0 | ||||||||||||||||||||||||
45 | } | - | ||||||||||||||||||||||||
46 | - | |||||||||||||||||||||||||
47 | BIO *BIO_new_dgram(int fd, int close_flag) | - | ||||||||||||||||||||||||
48 | { | - | ||||||||||||||||||||||||
49 | BIO *ret; | - | ||||||||||||||||||||||||
50 | - | |||||||||||||||||||||||||
51 | ret = BIO_new(BIO_s_datagram()); | - | ||||||||||||||||||||||||
52 | if (ret ==
| 0 | ||||||||||||||||||||||||
53 | ((void *)0)
| 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: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||
60 | } | - | ||||||||||||||||||||||||
61 | - | |||||||||||||||||||||||||
62 | static int dgram_new(BIO *bi) | - | ||||||||||||||||||||||||
63 | { | - | ||||||||||||||||||||||||
64 | bio_dgram_data *data = CRYPTO_zalloc(sizeof(*data), __FILE__, 155); | - | ||||||||||||||||||||||||
65 | - | |||||||||||||||||||||||||
66 | if (data ==
| 0 | ||||||||||||||||||||||||
67 | ((void *)0)
| 0 | ||||||||||||||||||||||||
68 | ) | - | ||||||||||||||||||||||||
69 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
70 | bi->ptr = data; | - | ||||||||||||||||||||||||
71 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
72 | } | - | ||||||||||||||||||||||||
73 | - | |||||||||||||||||||||||||
74 | static int dgram_free(BIO *a) | - | ||||||||||||||||||||||||
75 | { | - | ||||||||||||||||||||||||
76 | bio_dgram_data *data; | - | ||||||||||||||||||||||||
77 | - | |||||||||||||||||||||||||
78 | if (a ==
| 0 | ||||||||||||||||||||||||
79 | ((void *)0)
| 0 | ||||||||||||||||||||||||
80 | ) | - | ||||||||||||||||||||||||
81 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
82 | if (!dgram_clear(a)
| 0 | ||||||||||||||||||||||||
83 | return never executed: 0;return 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: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
89 | } | - | ||||||||||||||||||||||||
90 | - | |||||||||||||||||||||||||
91 | static int dgram_clear(BIO *a) | - | ||||||||||||||||||||||||
92 | { | - | ||||||||||||||||||||||||
93 | if (a ==
| 0 | ||||||||||||||||||||||||
94 | ((void *)0)
| 0 | ||||||||||||||||||||||||
95 | ) | - | ||||||||||||||||||||||||
96 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
97 | if (a->shutdown
| 0 | ||||||||||||||||||||||||
98 | if (a->init
| 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: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
105 | } | - | ||||||||||||||||||||||||
106 | - | |||||||||||||||||||||||||
107 | static 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
| 0 | ||||||||||||||||||||||||
120 | struct timeval timenow, timeleft; | - | ||||||||||||||||||||||||
121 | sz.i = sizeof(data->socket_timeout); | - | ||||||||||||||||||||||||
122 | if (getsockopt(b->num,
| 0 | ||||||||||||||||||||||||
123 | 1
| 0 | ||||||||||||||||||||||||
124 | ,
| 0 | ||||||||||||||||||||||||
125 | 20
| 0 | ||||||||||||||||||||||||
126 | ,
| 0 | ||||||||||||||||||||||||
127 | &(data->socket_timeout), (void *)&sz) < 0
| 0 | ||||||||||||||||||||||||
128 | perror("getsockopt"); | - | ||||||||||||||||||||||||
129 | } never executed: else if (sizeof(sz.s) != sizeof(sz.i)end of block
| 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
| 0 | ||||||||||||||||||||||||
139 | timeleft.tv_usec = 1000000 - timenow.tv_usec + timeleft.tv_usec; | - | ||||||||||||||||||||||||
140 | timeleft.tv_sec--; | - | ||||||||||||||||||||||||
141 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
142 | timeleft.tv_usec -= timenow.tv_usec; | - | ||||||||||||||||||||||||
143 | } never executed: end of block | 0 | ||||||||||||||||||||||||
144 | if (timeleft.tv_sec < timenow.tv_sec
| 0 | ||||||||||||||||||||||||
145 | timeleft.tv_sec = 0; | - | ||||||||||||||||||||||||
146 | timeleft.tv_usec = 1; | - | ||||||||||||||||||||||||
147 | } never executed: else {end of block | 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
| 0 | ||||||||||||||||||||||||
156 | && data->socket_timeout.tv_usec == 0
| 0 | ||||||||||||||||||||||||
157 | || (
| 0 | ||||||||||||||||||||||||
158 | || (data->socket_timeout.tv_sec == timeleft.tv_sec
| 0 | ||||||||||||||||||||||||
159 | && data->socket_timeout.tv_usec >= timeleft.tv_usec
| 0 | ||||||||||||||||||||||||
160 | - | |||||||||||||||||||||||||
161 | - | |||||||||||||||||||||||||
162 | - | |||||||||||||||||||||||||
163 | - | |||||||||||||||||||||||||
164 | - | |||||||||||||||||||||||||
165 | - | |||||||||||||||||||||||||
166 | - | |||||||||||||||||||||||||
167 | if (setsockopt(b->num,
| 0 | ||||||||||||||||||||||||
168 | 1
| 0 | ||||||||||||||||||||||||
169 | ,
| 0 | ||||||||||||||||||||||||
170 | 20
| 0 | ||||||||||||||||||||||||
171 | , &timeleft,
| 0 | ||||||||||||||||||||||||
172 | sizeof(struct timeval)) < 0
| 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 | - | |||||||||||||||||||||||||
181 | static 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
| 0 | ||||||||||||||||||||||||
188 | if (setsockopt
| 0 | ||||||||||||||||||||||||
189 | (b->num,
| 0 | ||||||||||||||||||||||||
190 | 1
| 0 | ||||||||||||||||||||||||
191 | ,
| 0 | ||||||||||||||||||||||||
192 | 20
| 0 | ||||||||||||||||||||||||
193 | , &(data->socket_timeout),
| 0 | ||||||||||||||||||||||||
194 | sizeof(struct timeval)) < 0
| 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 | - | |||||||||||||||||||||||||
202 | static 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 !=
| 0 | ||||||||||||||||||||||||
212 | ((void *)0)
| 0 | ||||||||||||||||||||||||
213 | ) { | - | ||||||||||||||||||||||||
214 | - | |||||||||||||||||||||||||
215 | (*__errno_location ()) | - | ||||||||||||||||||||||||
216 | =0; | - | ||||||||||||||||||||||||
217 | memset(&peer, 0, sizeof(peer)); | - | ||||||||||||||||||||||||
218 | dgram_adjust_rcv_timeout(b); | - | ||||||||||||||||||||||||
219 | if (data->peekmode
| 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
| 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
| 0 | ||||||||||||||||||||||||
231 | if (BIO_dgram_should_retry(ret)
| 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: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||
242 | } | - | ||||||||||||||||||||||||
243 | - | |||||||||||||||||||||||||
244 | static 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
| 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
| 0 | ||||||||||||||||||||||||
263 | if (BIO_dgram_should_retry(ret)
| 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: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||
271 | } | - | ||||||||||||||||||||||||
272 | - | |||||||||||||||||||||||||
273 | static 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,
| 0 | ||||||||||||||||||||||||
294 | ((void *)0)
| 0 | ||||||||||||||||||||||||
295 | )
| 0 | ||||||||||||||||||||||||
296 | && | - | ||||||||||||||||||||||||
297 | (
| 0 | ||||||||||||||||||||||||
298 | &tmp_addr
| 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); }))
| 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: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||
320 | } | - | ||||||||||||||||||||||||
321 | - | |||||||||||||||||||||||||
322 | static 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: 1:case 1: never executed: case 1: | 0 | ||||||||||||||||||||||||
342 | num = 0; | - | ||||||||||||||||||||||||
343 | ret = 0; | - | ||||||||||||||||||||||||
344 | break; never executed: break; | 0 | ||||||||||||||||||||||||
345 | case never executed: 3:case 3: never executed: case 3: | 0 | ||||||||||||||||||||||||
346 | ret = 0; | - | ||||||||||||||||||||||||
347 | break; never executed: break; | 0 | ||||||||||||||||||||||||
348 | case never executed: 104:case 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: 105:case 105: never executed: case 105: | 0 | ||||||||||||||||||||||||
355 | if (b->init
| 0 | ||||||||||||||||||||||||
356 | ip = (int *)ptr; | - | ||||||||||||||||||||||||
357 | if (ip !=
| 0 | ||||||||||||||||||||||||
358 | ((void *)0)
| 0 | ||||||||||||||||||||||||
359 | ) | - | ||||||||||||||||||||||||
360 | * never executed: ip = b->num;*ip = b->num; never executed: *ip = b->num; | 0 | ||||||||||||||||||||||||
361 | ret = b->num; | - | ||||||||||||||||||||||||
362 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
363 | ret = -1; never executed: ret = -1; | 0 | ||||||||||||||||||||||||
364 | break; never executed: break; | 0 | ||||||||||||||||||||||||
365 | case never executed: 8:case 8: never executed: case 8: | 0 | ||||||||||||||||||||||||
366 | ret = b->shutdown; | - | ||||||||||||||||||||||||
367 | break; never executed: break; | 0 | ||||||||||||||||||||||||
368 | case never executed: 9:case 9: never executed: case 9: | 0 | ||||||||||||||||||||||||
369 | b->shutdown = (int)num; | - | ||||||||||||||||||||||||
370 | break; never executed: break; | 0 | ||||||||||||||||||||||||
371 | case never executed: 10:case 10: never executed: case 10: | 0 | ||||||||||||||||||||||||
372 | case never executed: 13:case 13: never executed: case 13: | 0 | ||||||||||||||||||||||||
373 | ret = 0; | - | ||||||||||||||||||||||||
374 | break; never executed: break; | 0 | ||||||||||||||||||||||||
375 | case never executed: 12:case 12: never executed: case 12: | 0 | ||||||||||||||||||||||||
376 | case never executed: 11:case 11: never executed: case 11: | 0 | ||||||||||||||||||||||||
377 | ret = 1; | - | ||||||||||||||||||||||||
378 | break; never executed: break; | 0 | ||||||||||||||||||||||||
379 | case never executed: 31:case 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: 39:case 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
| 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 ((
| 0 | ||||||||||||||||||||||||
399 | IPPROTO_IP
| 0 | ||||||||||||||||||||||||
400 | ,
| 0 | ||||||||||||||||||||||||
401 | 10
| 0 | ||||||||||||||||||||||||
402 | ,
| 0 | ||||||||||||||||||||||||
403 | &sockopt_val, sizeof(sockopt_val))) < 0
| 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 ((
| 0 | ||||||||||||||||||||||||
414 | IPPROTO_IPV6
| 0 | ||||||||||||||||||||||||
415 | ,
| 0 | ||||||||||||||||||||||||
416 | 23
| 0 | ||||||||||||||||||||||||
417 | ,
| 0 | ||||||||||||||||||||||||
418 | &sockopt_val, sizeof(sockopt_val))) < 0
| 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: 40:case 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
| 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 ((
| 0 | ||||||||||||||||||||||||
444 | getsockopt(b->num,
| 0 | ||||||||||||||||||||||||
445 | IPPROTO_IP
| 0 | ||||||||||||||||||||||||
446 | ,
| 0 | ||||||||||||||||||||||||
447 | 14
| 0 | ||||||||||||||||||||||||
448 | , (void *)&sockopt_val,
| 0 | ||||||||||||||||||||||||
449 | &sockopt_len)) < 0
| 0 | ||||||||||||||||||||||||
450 | ret = 0; | - | ||||||||||||||||||||||||
451 | } never executed: else {end of block | 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 ((
| 0 | ||||||||||||||||||||||||
465 | getsockopt(b->num,
| 0 | ||||||||||||||||||||||||
466 | IPPROTO_IPV6
| 0 | ||||||||||||||||||||||||
467 | ,
| 0 | ||||||||||||||||||||||||
468 | 24
| 0 | ||||||||||||||||||||||||
469 | ,
| 0 | ||||||||||||||||||||||||
470 | (void *)&sockopt_val, &sockopt_len)) < 0
| 0 | ||||||||||||||||||||||||
471 | || sockopt_val < 0
| 0 | ||||||||||||||||||||||||
472 | ret = 0; | - | ||||||||||||||||||||||||
473 | } never executed: else {end of block | 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: 47:case 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,
| 0 | ||||||||||||||||||||||||
507 | ((void *)0)
| 0 | ||||||||||||||||||||||||
508 | )
| 0 | ||||||||||||||||||||||||
509 | && | - | ||||||||||||||||||||||||
510 | (
| 0 | ||||||||||||||||||||||||
511 | &tmp_addr
| 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); }))
| 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: 41:case 41: never executed: case 41: | 0 | ||||||||||||||||||||||||
527 | return never executed: data->mtu;return data->mtu; never executed: return data->mtu; | 0 | ||||||||||||||||||||||||
528 | case never executed: 42:case 42: never executed: case 42: | 0 | ||||||||||||||||||||||||
529 | data->mtu = num; | - | ||||||||||||||||||||||||
530 | ret = num; | - | ||||||||||||||||||||||||
531 | break; never executed: break; | 0 | ||||||||||||||||||||||||
532 | case never executed: 32:case 32: never executed: case 32: | 0 | ||||||||||||||||||||||||
533 | if (ptr !=
| 0 | ||||||||||||||||||||||||
534 | ((void *)0)
| 0 | ||||||||||||||||||||||||
535 | ) { | - | ||||||||||||||||||||||||
536 | data->connected = 1; | - | ||||||||||||||||||||||||
537 | BIO_ADDR_make(&data->peer, BIO_ADDR_sockaddr((BIO_ADDR *)ptr)); | - | ||||||||||||||||||||||||
538 | } never executed: else {end of block | 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: 46:case 46: never executed: case 46: | 0 | ||||||||||||||||||||||||
544 | ret = BIO_ADDR_sockaddr_size(&data->peer); | - | ||||||||||||||||||||||||
545 | - | |||||||||||||||||||||||||
546 | - | |||||||||||||||||||||||||
547 | if (num == 0
| 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: 44:case 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: 45:case 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: 33:case 33: never executed: case 33: | 0 | ||||||||||||||||||||||||
559 | if (setsockopt(b->num,
| 0 | ||||||||||||||||||||||||
560 | 1
| 0 | ||||||||||||||||||||||||
561 | ,
| 0 | ||||||||||||||||||||||||
562 | 20
| 0 | ||||||||||||||||||||||||
563 | , ptr,
| 0 | ||||||||||||||||||||||||
564 | sizeof(struct timeval)) < 0
| 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: 34:case 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,
| 0 | ||||||||||||||||||||||||
580 | 1
| 0 | ||||||||||||||||||||||||
581 | ,
| 0 | ||||||||||||||||||||||||
582 | 20
| 0 | ||||||||||||||||||||||||
583 | ,
| 0 | ||||||||||||||||||||||||
584 | ptr, (void *)&sz) < 0
| 0 | ||||||||||||||||||||||||
585 | perror("getsockopt"); | - | ||||||||||||||||||||||||
586 | ret = -1; | - | ||||||||||||||||||||||||
587 | } never executed: else if (sizeof(sz.s) != sizeof(sz.i)end of block
| 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: elseend of block | 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: 35:case 35: never executed: case 35: | 0 | ||||||||||||||||||||||||
598 | if (setsockopt(b->num,
| 0 | ||||||||||||||||||||||||
599 | 1
| 0 | ||||||||||||||||||||||||
600 | ,
| 0 | ||||||||||||||||||||||||
601 | 21
| 0 | ||||||||||||||||||||||||
602 | , ptr,
| 0 | ||||||||||||||||||||||||
603 | sizeof(struct timeval)) < 0
| 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: 36:case 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,
| 0 | ||||||||||||||||||||||||
619 | 1
| 0 | ||||||||||||||||||||||||
620 | ,
| 0 | ||||||||||||||||||||||||
621 | 21
| 0 | ||||||||||||||||||||||||
622 | ,
| 0 | ||||||||||||||||||||||||
623 | ptr, (void *)&sz) < 0
| 0 | ||||||||||||||||||||||||
624 | perror("getsockopt"); | - | ||||||||||||||||||||||||
625 | ret = -1; | - | ||||||||||||||||||||||||
626 | } never executed: else if (sizeof(sz.s) != sizeof(sz.i)end of block
| 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: elseend of block | 0 | ||||||||||||||||||||||||
630 | ret = sz.i; never executed: ret = sz.i; | 0 | ||||||||||||||||||||||||
631 | - | |||||||||||||||||||||||||
632 | } | - | ||||||||||||||||||||||||
633 | break; never executed: break; | 0 | ||||||||||||||||||||||||
634 | - | |||||||||||||||||||||||||
635 | case never executed: 38:case 38: never executed: case 38: | 0 | ||||||||||||||||||||||||
636 | - | |||||||||||||||||||||||||
637 | case never executed: 37:case 37: never executed: case 37: | 0 | ||||||||||||||||||||||||
638 | - | |||||||||||||||||||||||||
639 | - | |||||||||||||||||||||||||
640 | - | |||||||||||||||||||||||||
641 | d_errno = (data->_errno == | - | ||||||||||||||||||||||||
642 | 11 | - | ||||||||||||||||||||||||
643 | ); | - | ||||||||||||||||||||||||
644 | - | |||||||||||||||||||||||||
645 | if (d_errno
| 0 | ||||||||||||||||||||||||
646 | ret = 1; | - | ||||||||||||||||||||||||
647 | data->_errno = 0; | - | ||||||||||||||||||||||||
648 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
649 | ret = 0; never executed: ret = 0; | 0 | ||||||||||||||||||||||||
650 | break; never executed: break; | 0 | ||||||||||||||||||||||||
651 | - | |||||||||||||||||||||||||
652 | case never executed: 43:case 43: never executed: case 43: | 0 | ||||||||||||||||||||||||
653 | if (data->_errno ==
| 0 | ||||||||||||||||||||||||
654 | 90
| 0 | ||||||||||||||||||||||||
655 | ) { | - | ||||||||||||||||||||||||
656 | ret = 1; | - | ||||||||||||||||||||||||
657 | data->_errno = 0; | - | ||||||||||||||||||||||||
658 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
659 | ret = 0; never executed: ret = 0; | 0 | ||||||||||||||||||||||||
660 | break; never executed: break; | 0 | ||||||||||||||||||||||||
661 | - | |||||||||||||||||||||||||
662 | case never executed: 48:case 48: never executed: case 48: | 0 | ||||||||||||||||||||||||
663 | sockopt_val = num
| 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 ((
| 0 | ||||||||||||||||||||||||
677 | 3
| 0 | ||||||||||||||||||||||||
678 | :
| 0 | ||||||||||||||||||||||||
679 | 0
| 0 | ||||||||||||||||||||||||
680 | ),
| 0 | ||||||||||||||||||||||||
681 | (ret = setsockopt(b->num,
| 0 | ||||||||||||||||||||||||
682 | IPPROTO_IP
| 0 | ||||||||||||||||||||||||
683 | ,
| 0 | ||||||||||||||||||||||||
684 | 10
| 0 | ||||||||||||||||||||||||
685 | ,
| 0 | ||||||||||||||||||||||||
686 | &sockopt_val, sizeof(sockopt_val))) < 0
| 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 ((
| 0 | ||||||||||||||||||||||||
697 | IPPROTO_IPV6
| 0 | ||||||||||||||||||||||||
698 | ,
| 0 | ||||||||||||||||||||||||
699 | 62
| 0 | ||||||||||||||||||||||||
700 | ,
| 0 | ||||||||||||||||||||||||
701 | (const void *)&sockopt_val,
| 0 | ||||||||||||||||||||||||
702 | sizeof(sockopt_val))) < 0
| 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: 49:case 49: never executed: case 49: | 0 | ||||||||||||||||||||||||
714 | ret = dgram_get_mtu_overhead(data); | - | ||||||||||||||||||||||||
715 | break; never executed: break; | 0 | ||||||||||||||||||||||||
716 | case never executed: 50:case 50: never executed: case 50: | 0 | ||||||||||||||||||||||||
717 | case never executed: 71:case 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: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||
725 | } | - | ||||||||||||||||||||||||
726 | - | |||||||||||||||||||||||||
727 | static 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: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||
734 | } | - | ||||||||||||||||||||||||
735 | static int BIO_dgram_should_retry(int i) | - | ||||||||||||||||||||||||
736 | { | - | ||||||||||||||||||||||||
737 | int err; | - | ||||||||||||||||||||||||
738 | - | |||||||||||||||||||||||||
739 | if ((
| 0 | ||||||||||||||||||||||||
740 | err = | - | ||||||||||||||||||||||||
741 | (*__errno_location ()) | - | ||||||||||||||||||||||||
742 | ; | - | ||||||||||||||||||||||||
743 | return never executed: BIO_dgram_non_fatal_error(err);return BIO_dgram_non_fatal_error(err); never executed: return BIO_dgram_non_fatal_error(err); | 0 | ||||||||||||||||||||||||
744 | } | - | ||||||||||||||||||||||||
745 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
746 | } | - | ||||||||||||||||||||||||
747 | - | |||||||||||||||||||||||||
748 | int 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: 1;return 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: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
783 | } | - | ||||||||||||||||||||||||
784 | - | |||||||||||||||||||||||||
785 | static 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 code | Preprocessed file |