| 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 |