summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/bio/bss_dgram.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/bio/bss_dgram.c')
-rw-r--r--src/lib/libcrypto/bio/bss_dgram.c17
1 files changed, 3 insertions, 14 deletions
diff --git a/src/lib/libcrypto/bio/bss_dgram.c b/src/lib/libcrypto/bio/bss_dgram.c
index a3b5bb6574..ab269aeba3 100644
--- a/src/lib/libcrypto/bio/bss_dgram.c
+++ b/src/lib/libcrypto/bio/bss_dgram.c
@@ -331,13 +331,7 @@ dgram_read(BIO *b, char *out, int outl)
331 bio_dgram_data *data = (bio_dgram_data *)b->ptr; 331 bio_dgram_data *data = (bio_dgram_data *)b->ptr;
332 332
333 struct { 333 struct {
334 /* 334 socklen_t len;
335 * See commentary in b_sock.c. <appro>
336 */
337 union {
338 size_t s;
339 int i;
340 } len;
341 union { 335 union {
342 struct sockaddr sa; 336 struct sockaddr sa;
343 struct sockaddr_in sa_in; 337 struct sockaddr_in sa_in;
@@ -345,18 +339,13 @@ dgram_read(BIO *b, char *out, int outl)
345 } peer; 339 } peer;
346 } sa; 340 } sa;
347 341
348 sa.len.s = 0; 342 sa.len = sizeof(sa.peer);
349 sa.len.i = sizeof(sa.peer);
350 343
351 if (out != NULL) { 344 if (out != NULL) {
352 errno = 0; 345 errno = 0;
353 memset(&sa.peer, 0x00, sizeof(sa.peer)); 346 memset(&sa.peer, 0x00, sizeof(sa.peer));
354 dgram_adjust_rcv_timeout(b); 347 dgram_adjust_rcv_timeout(b);
355 ret = recvfrom(b->num, out, outl, 0, &sa.peer.sa,(void *)&sa.len); 348 ret = recvfrom(b->num, out, outl, 0, &sa.peer.sa, &sa.len);
356 if (sizeof(sa.len.i) != sizeof(sa.len.s) && sa.len.i == 0) {
357 OPENSSL_assert(sa.len.s <= sizeof(sa.peer));
358 sa.len.i = (int)sa.len.s;
359 }
360 349
361 if (! data->connected && ret >= 0) 350 if (! data->connected && ret >= 0)
362 BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, &sa.peer); 351 BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, &sa.peer);