summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorbcook <>2014-11-26 05:37:26 +0000
committerbcook <>2014-11-26 05:37:26 +0000
commit03b877a53bb53b621e1b711ba68b8743024bc216 (patch)
tree8ebf5889029291163b28d7005ec9d9fbaaf4ae5b /src/lib
parent6f652676bf6d92f62e063a7719b1f2d117f9f74b (diff)
downloadopenbsd-03b877a53bb53b621e1b711ba68b8743024bc216.tar.gz
openbsd-03b877a53bb53b621e1b711ba68b8743024bc216.tar.bz2
openbsd-03b877a53bb53b621e1b711ba68b8743024bc216.zip
normalize set/getsockopt usage.
Remove the remaining random casts on optval. Fixups for this can be handled by the portability layer all in once place. Remove remaining fake socklen_t unions, though beck@ points out that this also removes support for socklen_t changing its length at runtime. RIP. ok tedu@ beck@ miod@ deraadt@
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/bio/b_sock.c5
-rw-r--r--src/lib/libcrypto/bio/bss_conn.c4
-rw-r--r--src/lib/libcrypto/bio/bss_dgram.c63
-rw-r--r--src/lib/libssl/src/crypto/bio/b_sock.c5
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_conn.c4
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_dgram.c63
6 files changed, 54 insertions, 90 deletions
diff --git a/src/lib/libcrypto/bio/b_sock.c b/src/lib/libcrypto/bio/b_sock.c
index 34e5d9830e..8f3c58fda2 100644
--- a/src/lib/libcrypto/bio/b_sock.c
+++ b/src/lib/libcrypto/bio/b_sock.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: b_sock.c,v 1.58 2014/10/13 02:49:53 bcook Exp $ */ 1/* $OpenBSD: b_sock.c,v 1.59 2014/11/26 05:37:26 bcook Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -318,8 +318,7 @@ again:
318 if (bind_mode == BIO_BIND_REUSEADDR) { 318 if (bind_mode == BIO_BIND_REUSEADDR) {
319 int i = 1; 319 int i = 1;
320 320
321 ret = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&i, 321 ret = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));
322 sizeof(i));
323 bind_mode = BIO_BIND_NORMAL; 322 bind_mode = BIO_BIND_NORMAL;
324 } 323 }
325 if (bind(s, &server.sa, addrlen) == -1) { 324 if (bind(s, &server.sa, addrlen) == -1) {
diff --git a/src/lib/libcrypto/bio/bss_conn.c b/src/lib/libcrypto/bio/bss_conn.c
index e55fc2d163..7f50936677 100644
--- a/src/lib/libcrypto/bio/bss_conn.c
+++ b/src/lib/libcrypto/bio/bss_conn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: bss_conn.c,v 1.31 2014/11/21 18:15:40 deraadt Exp $ */ 1/* $OpenBSD: bss_conn.c,v 1.32 2014/11/26 05:37:26 bcook Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -220,7 +220,7 @@ conn_state(BIO *b, BIO_CONNECT *c)
220 220
221#if defined(SO_KEEPALIVE) 221#if defined(SO_KEEPALIVE)
222 i = 1; 222 i = 1;
223 i = setsockopt(b->num, SOL_SOCKET, SO_KEEPALIVE,(char *)&i, sizeof(i)); 223 i = setsockopt(b->num, SOL_SOCKET, SO_KEEPALIVE, &i, sizeof(i));
224 if (i < 0) { 224 if (i < 0) {
225 SYSerr(SYS_F_SOCKET, errno); 225 SYSerr(SYS_F_SOCKET, errno);
226 ERR_asprintf_error_data("host=%s:%s", 226 ERR_asprintf_error_data("host=%s:%s",
diff --git a/src/lib/libcrypto/bio/bss_dgram.c b/src/lib/libcrypto/bio/bss_dgram.c
index 8f7f945e73..9809eda92e 100644
--- a/src/lib/libcrypto/bio/bss_dgram.c
+++ b/src/lib/libcrypto/bio/bss_dgram.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: bss_dgram.c,v 1.34 2014/11/26 05:01:47 bcook Exp $ */ 1/* $OpenBSD: bss_dgram.c,v 1.35 2014/11/26 05:37:26 bcook Exp $ */
2/* 2/*
3 * DTLS implementation written by Nagendra Modadugu 3 * DTLS implementation written by Nagendra Modadugu
4 * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. 4 * (nagendra@cs.stanford.edu) for the OpenSSL project 2005.
@@ -244,21 +244,17 @@ dgram_adjust_rcv_timeout(BIO *b)
244{ 244{
245#if defined(SO_RCVTIMEO) 245#if defined(SO_RCVTIMEO)
246 bio_dgram_data *data = (bio_dgram_data *)b->ptr; 246 bio_dgram_data *data = (bio_dgram_data *)b->ptr;
247 union { size_t s;
248 int i;
249 } sz = {0};
250 247
251 /* Is a timer active? */ 248 /* Is a timer active? */
252 if (data->next_timeout.tv_sec > 0 || data->next_timeout.tv_usec > 0) { 249 if (data->next_timeout.tv_sec > 0 || data->next_timeout.tv_usec > 0) {
253 struct timeval timenow, timeleft; 250 struct timeval timenow, timeleft;
254 251
255 /* Read current socket timeout */ 252 /* Read current socket timeout */
256 sz.i = sizeof(data->socket_timeout); 253 socklen_t sz = sizeof(data->socket_timeout);
257 if (getsockopt(b->num, SOL_SOCKET, SO_RCVTIMEO, 254 if (getsockopt(b->num, SOL_SOCKET, SO_RCVTIMEO,
258 &(data->socket_timeout), (void *)&sz) < 0) { 255 &(data->socket_timeout), &sz) < 0) {
259 perror("getsockopt"); 256 perror("getsockopt");
260 } else if (sizeof(sz.s) != sizeof(sz.i) && sz.i == 0) 257 }
261 OPENSSL_assert(sz.s <= sizeof(data->socket_timeout));
262 258
263 /* Get current time */ 259 /* Get current time */
264 get_current_time(&timenow); 260 get_current_time(&timenow);
@@ -469,17 +465,18 @@ dgram_ctrl(BIO *b, int cmd, long num, void *ptr)
469 switch (addr.sa.sa_family) { 465 switch (addr.sa.sa_family) {
470 case AF_INET: 466 case AF_INET:
471 sockopt_val = IP_PMTUDISC_DO; 467 sockopt_val = IP_PMTUDISC_DO;
472 if ((ret = setsockopt(b->num, IPPROTO_IP, 468 ret = setsockopt(b->num, IPPROTO_IP, IP_MTU_DISCOVER,
473 IP_MTU_DISCOVER, &sockopt_val, 469 &sockopt_val, sizeof(sockopt_val));
474 sizeof(sockopt_val))) < 0) 470 if (ret < 0)
475 perror("setsockopt"); 471 perror("setsockopt");
476 break; 472 break;
477#if defined(IPV6_MTU_DISCOVER) && defined(IPV6_PMTUDISC_DO) 473#if defined(IPV6_MTU_DISCOVER) && defined(IPV6_PMTUDISC_DO)
478 case AF_INET6: 474 case AF_INET6:
479 sockopt_val = IPV6_PMTUDISC_DO; 475 sockopt_val = IPV6_PMTUDISC_DO;
480 if ((ret = setsockopt(b->num, IPPROTO_IPV6, 476 ret = setsockopt(b->num, IPPROTO_IPV6,
481 IPV6_MTU_DISCOVER, &sockopt_val, 477 IPV6_MTU_DISCOVER, &sockopt_val,
482 sizeof(sockopt_val))) < 0) 478 sizeof(sockopt_val));
479 if (ret < 0)
483 perror("setsockopt"); 480 perror("setsockopt");
484 break; 481 break;
485#endif 482#endif
@@ -502,9 +499,9 @@ dgram_ctrl(BIO *b, int cmd, long num, void *ptr)
502 sockopt_len = sizeof(sockopt_val); 499 sockopt_len = sizeof(sockopt_val);
503 switch (addr.sa.sa_family) { 500 switch (addr.sa.sa_family) {
504 case AF_INET: 501 case AF_INET:
505 if ((ret = getsockopt(b->num, IPPROTO_IP, IP_MTU, 502 ret = getsockopt(b->num, IPPROTO_IP, IP_MTU,
506 (void *)&sockopt_val, &sockopt_len)) < 0 || 503 &sockopt_val, &sockopt_len);
507 sockopt_val < 0) { 504 if (ret < 0 || sockopt_val < 0) {
508 ret = 0; 505 ret = 0;
509 } else { 506 } else {
510 /* we assume that the transport protocol is UDP and no 507 /* we assume that the transport protocol is UDP and no
@@ -516,9 +513,9 @@ dgram_ctrl(BIO *b, int cmd, long num, void *ptr)
516 break; 513 break;
517#if defined(IPV6_MTU) 514#if defined(IPV6_MTU)
518 case AF_INET6: 515 case AF_INET6:
519 if ((ret = getsockopt(b->num, IPPROTO_IPV6, IPV6_MTU, 516 ret = getsockopt(b->num, IPPROTO_IPV6, IPV6_MTU,
520 (void *)&sockopt_val, &sockopt_len)) < 0 || 517 &sockopt_val, &sockopt_len);
521 sockopt_val < 0) { 518 if (ret < 0 || sockopt_val < 0) {
522 ret = 0; 519 ret = 0;
523 } else { 520 } else {
524 /* we assume that the transport protocol is UDP and no 521 /* we assume that the transport protocol is UDP and no
@@ -626,20 +623,13 @@ default:
626 break; 623 break;
627 case BIO_CTRL_DGRAM_GET_RECV_TIMEOUT: 624 case BIO_CTRL_DGRAM_GET_RECV_TIMEOUT:
628 { 625 {
629 union { 626 socklen_t sz = sizeof(struct timeval);
630 size_t s;
631 int i;
632 } sz = {0};
633 sz.i = sizeof(struct timeval);
634 if (getsockopt(b->num, SOL_SOCKET, SO_RCVTIMEO, 627 if (getsockopt(b->num, SOL_SOCKET, SO_RCVTIMEO,
635 ptr, (void *)&sz) < 0) { 628 ptr, &sz) < 0) {
636 perror("getsockopt"); 629 perror("getsockopt");
637 ret = -1; 630 ret = -1;
638 } else if (sizeof(sz.s)!=sizeof(sz.i) && sz.i==0) {
639 OPENSSL_assert(sz.s <= sizeof(struct timeval));
640 ret = (int)sz.s;
641 } else 631 } else
642 ret = sz.i; 632 ret = sz;
643 } 633 }
644 break; 634 break;
645#endif 635#endif
@@ -653,20 +643,13 @@ default:
653 break; 643 break;
654 case BIO_CTRL_DGRAM_GET_SEND_TIMEOUT: 644 case BIO_CTRL_DGRAM_GET_SEND_TIMEOUT:
655 { 645 {
656 union { 646 socklen_t sz = sizeof(struct timeval);
657 size_t s;
658 int i;
659 } sz = {0};
660 sz.i = sizeof(struct timeval);
661 if (getsockopt(b->num, SOL_SOCKET, SO_SNDTIMEO, 647 if (getsockopt(b->num, SOL_SOCKET, SO_SNDTIMEO,
662 ptr, (void *)&sz) < 0) { 648 ptr, &sz) < 0) {
663 perror("getsockopt"); 649 perror("getsockopt");
664 ret = -1; 650 ret = -1;
665 } else if (sizeof(sz.s) != sizeof(sz.i) && sz.i == 0) {
666 OPENSSL_assert(sz.s <= sizeof(struct timeval));
667 ret = (int)sz.s;
668 } else 651 } else
669 ret = sz.i; 652 ret = sz;
670 } 653 }
671 break; 654 break;
672#endif 655#endif
@@ -1295,7 +1278,7 @@ dgram_sctp_ctrl(BIO *b, int cmd, long num, void *ptr)
1295 if (authkeyid.scact_keynumber > 0) { 1278 if (authkeyid.scact_keynumber > 0) {
1296 authkeyid.scact_keynumber = authkeyid.scact_keynumber - 1; 1279 authkeyid.scact_keynumber = authkeyid.scact_keynumber - 1;
1297 ret = setsockopt(b->num, IPPROTO_SCTP, SCTP_AUTH_DELETE_KEY, 1280 ret = setsockopt(b->num, IPPROTO_SCTP, SCTP_AUTH_DELETE_KEY,
1298 &authkeyid, sizeof(struct sctp_authkeyid)); 1281 &authkeyid, sizeof(struct sctp_authkeyid));
1299 if (ret < 0) 1282 if (ret < 0)
1300 break; 1283 break;
1301 } 1284 }
diff --git a/src/lib/libssl/src/crypto/bio/b_sock.c b/src/lib/libssl/src/crypto/bio/b_sock.c
index 34e5d9830e..8f3c58fda2 100644
--- a/src/lib/libssl/src/crypto/bio/b_sock.c
+++ b/src/lib/libssl/src/crypto/bio/b_sock.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: b_sock.c,v 1.58 2014/10/13 02:49:53 bcook Exp $ */ 1/* $OpenBSD: b_sock.c,v 1.59 2014/11/26 05:37:26 bcook Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -318,8 +318,7 @@ again:
318 if (bind_mode == BIO_BIND_REUSEADDR) { 318 if (bind_mode == BIO_BIND_REUSEADDR) {
319 int i = 1; 319 int i = 1;
320 320
321 ret = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&i, 321 ret = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));
322 sizeof(i));
323 bind_mode = BIO_BIND_NORMAL; 322 bind_mode = BIO_BIND_NORMAL;
324 } 323 }
325 if (bind(s, &server.sa, addrlen) == -1) { 324 if (bind(s, &server.sa, addrlen) == -1) {
diff --git a/src/lib/libssl/src/crypto/bio/bss_conn.c b/src/lib/libssl/src/crypto/bio/bss_conn.c
index e55fc2d163..7f50936677 100644
--- a/src/lib/libssl/src/crypto/bio/bss_conn.c
+++ b/src/lib/libssl/src/crypto/bio/bss_conn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: bss_conn.c,v 1.31 2014/11/21 18:15:40 deraadt Exp $ */ 1/* $OpenBSD: bss_conn.c,v 1.32 2014/11/26 05:37:26 bcook Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -220,7 +220,7 @@ conn_state(BIO *b, BIO_CONNECT *c)
220 220
221#if defined(SO_KEEPALIVE) 221#if defined(SO_KEEPALIVE)
222 i = 1; 222 i = 1;
223 i = setsockopt(b->num, SOL_SOCKET, SO_KEEPALIVE,(char *)&i, sizeof(i)); 223 i = setsockopt(b->num, SOL_SOCKET, SO_KEEPALIVE, &i, sizeof(i));
224 if (i < 0) { 224 if (i < 0) {
225 SYSerr(SYS_F_SOCKET, errno); 225 SYSerr(SYS_F_SOCKET, errno);
226 ERR_asprintf_error_data("host=%s:%s", 226 ERR_asprintf_error_data("host=%s:%s",
diff --git a/src/lib/libssl/src/crypto/bio/bss_dgram.c b/src/lib/libssl/src/crypto/bio/bss_dgram.c
index 8f7f945e73..9809eda92e 100644
--- a/src/lib/libssl/src/crypto/bio/bss_dgram.c
+++ b/src/lib/libssl/src/crypto/bio/bss_dgram.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: bss_dgram.c,v 1.34 2014/11/26 05:01:47 bcook Exp $ */ 1/* $OpenBSD: bss_dgram.c,v 1.35 2014/11/26 05:37:26 bcook Exp $ */
2/* 2/*
3 * DTLS implementation written by Nagendra Modadugu 3 * DTLS implementation written by Nagendra Modadugu
4 * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. 4 * (nagendra@cs.stanford.edu) for the OpenSSL project 2005.
@@ -244,21 +244,17 @@ dgram_adjust_rcv_timeout(BIO *b)
244{ 244{
245#if defined(SO_RCVTIMEO) 245#if defined(SO_RCVTIMEO)
246 bio_dgram_data *data = (bio_dgram_data *)b->ptr; 246 bio_dgram_data *data = (bio_dgram_data *)b->ptr;
247 union { size_t s;
248 int i;
249 } sz = {0};
250 247
251 /* Is a timer active? */ 248 /* Is a timer active? */
252 if (data->next_timeout.tv_sec > 0 || data->next_timeout.tv_usec > 0) { 249 if (data->next_timeout.tv_sec > 0 || data->next_timeout.tv_usec > 0) {
253 struct timeval timenow, timeleft; 250 struct timeval timenow, timeleft;
254 251
255 /* Read current socket timeout */ 252 /* Read current socket timeout */
256 sz.i = sizeof(data->socket_timeout); 253 socklen_t sz = sizeof(data->socket_timeout);
257 if (getsockopt(b->num, SOL_SOCKET, SO_RCVTIMEO, 254 if (getsockopt(b->num, SOL_SOCKET, SO_RCVTIMEO,
258 &(data->socket_timeout), (void *)&sz) < 0) { 255 &(data->socket_timeout), &sz) < 0) {
259 perror("getsockopt"); 256 perror("getsockopt");
260 } else if (sizeof(sz.s) != sizeof(sz.i) && sz.i == 0) 257 }
261 OPENSSL_assert(sz.s <= sizeof(data->socket_timeout));
262 258
263 /* Get current time */ 259 /* Get current time */
264 get_current_time(&timenow); 260 get_current_time(&timenow);
@@ -469,17 +465,18 @@ dgram_ctrl(BIO *b, int cmd, long num, void *ptr)
469 switch (addr.sa.sa_family) { 465 switch (addr.sa.sa_family) {
470 case AF_INET: 466 case AF_INET:
471 sockopt_val = IP_PMTUDISC_DO; 467 sockopt_val = IP_PMTUDISC_DO;
472 if ((ret = setsockopt(b->num, IPPROTO_IP, 468 ret = setsockopt(b->num, IPPROTO_IP, IP_MTU_DISCOVER,
473 IP_MTU_DISCOVER, &sockopt_val, 469 &sockopt_val, sizeof(sockopt_val));
474 sizeof(sockopt_val))) < 0) 470 if (ret < 0)
475 perror("setsockopt"); 471 perror("setsockopt");
476 break; 472 break;
477#if defined(IPV6_MTU_DISCOVER) && defined(IPV6_PMTUDISC_DO) 473#if defined(IPV6_MTU_DISCOVER) && defined(IPV6_PMTUDISC_DO)
478 case AF_INET6: 474 case AF_INET6:
479 sockopt_val = IPV6_PMTUDISC_DO; 475 sockopt_val = IPV6_PMTUDISC_DO;
480 if ((ret = setsockopt(b->num, IPPROTO_IPV6, 476 ret = setsockopt(b->num, IPPROTO_IPV6,
481 IPV6_MTU_DISCOVER, &sockopt_val, 477 IPV6_MTU_DISCOVER, &sockopt_val,
482 sizeof(sockopt_val))) < 0) 478 sizeof(sockopt_val));
479 if (ret < 0)
483 perror("setsockopt"); 480 perror("setsockopt");
484 break; 481 break;
485#endif 482#endif
@@ -502,9 +499,9 @@ dgram_ctrl(BIO *b, int cmd, long num, void *ptr)
502 sockopt_len = sizeof(sockopt_val); 499 sockopt_len = sizeof(sockopt_val);
503 switch (addr.sa.sa_family) { 500 switch (addr.sa.sa_family) {
504 case AF_INET: 501 case AF_INET:
505 if ((ret = getsockopt(b->num, IPPROTO_IP, IP_MTU, 502 ret = getsockopt(b->num, IPPROTO_IP, IP_MTU,
506 (void *)&sockopt_val, &sockopt_len)) < 0 || 503 &sockopt_val, &sockopt_len);
507 sockopt_val < 0) { 504 if (ret < 0 || sockopt_val < 0) {
508 ret = 0; 505 ret = 0;
509 } else { 506 } else {
510 /* we assume that the transport protocol is UDP and no 507 /* we assume that the transport protocol is UDP and no
@@ -516,9 +513,9 @@ dgram_ctrl(BIO *b, int cmd, long num, void *ptr)
516 break; 513 break;
517#if defined(IPV6_MTU) 514#if defined(IPV6_MTU)
518 case AF_INET6: 515 case AF_INET6:
519 if ((ret = getsockopt(b->num, IPPROTO_IPV6, IPV6_MTU, 516 ret = getsockopt(b->num, IPPROTO_IPV6, IPV6_MTU,
520 (void *)&sockopt_val, &sockopt_len)) < 0 || 517 &sockopt_val, &sockopt_len);
521 sockopt_val < 0) { 518 if (ret < 0 || sockopt_val < 0) {
522 ret = 0; 519 ret = 0;
523 } else { 520 } else {
524 /* we assume that the transport protocol is UDP and no 521 /* we assume that the transport protocol is UDP and no
@@ -626,20 +623,13 @@ default:
626 break; 623 break;
627 case BIO_CTRL_DGRAM_GET_RECV_TIMEOUT: 624 case BIO_CTRL_DGRAM_GET_RECV_TIMEOUT:
628 { 625 {
629 union { 626 socklen_t sz = sizeof(struct timeval);
630 size_t s;
631 int i;
632 } sz = {0};
633 sz.i = sizeof(struct timeval);
634 if (getsockopt(b->num, SOL_SOCKET, SO_RCVTIMEO, 627 if (getsockopt(b->num, SOL_SOCKET, SO_RCVTIMEO,
635 ptr, (void *)&sz) < 0) { 628 ptr, &sz) < 0) {
636 perror("getsockopt"); 629 perror("getsockopt");
637 ret = -1; 630 ret = -1;
638 } else if (sizeof(sz.s)!=sizeof(sz.i) && sz.i==0) {
639 OPENSSL_assert(sz.s <= sizeof(struct timeval));
640 ret = (int)sz.s;
641 } else 631 } else
642 ret = sz.i; 632 ret = sz;
643 } 633 }
644 break; 634 break;
645#endif 635#endif
@@ -653,20 +643,13 @@ default:
653 break; 643 break;
654 case BIO_CTRL_DGRAM_GET_SEND_TIMEOUT: 644 case BIO_CTRL_DGRAM_GET_SEND_TIMEOUT:
655 { 645 {
656 union { 646 socklen_t sz = sizeof(struct timeval);
657 size_t s;
658 int i;
659 } sz = {0};
660 sz.i = sizeof(struct timeval);
661 if (getsockopt(b->num, SOL_SOCKET, SO_SNDTIMEO, 647 if (getsockopt(b->num, SOL_SOCKET, SO_SNDTIMEO,
662 ptr, (void *)&sz) < 0) { 648 ptr, &sz) < 0) {
663 perror("getsockopt"); 649 perror("getsockopt");
664 ret = -1; 650 ret = -1;
665 } else if (sizeof(sz.s) != sizeof(sz.i) && sz.i == 0) {
666 OPENSSL_assert(sz.s <= sizeof(struct timeval));
667 ret = (int)sz.s;
668 } else 651 } else
669 ret = sz.i; 652 ret = sz;
670 } 653 }
671 break; 654 break;
672#endif 655#endif
@@ -1295,7 +1278,7 @@ dgram_sctp_ctrl(BIO *b, int cmd, long num, void *ptr)
1295 if (authkeyid.scact_keynumber > 0) { 1278 if (authkeyid.scact_keynumber > 0) {
1296 authkeyid.scact_keynumber = authkeyid.scact_keynumber - 1; 1279 authkeyid.scact_keynumber = authkeyid.scact_keynumber - 1;
1297 ret = setsockopt(b->num, IPPROTO_SCTP, SCTP_AUTH_DELETE_KEY, 1280 ret = setsockopt(b->num, IPPROTO_SCTP, SCTP_AUTH_DELETE_KEY,
1298 &authkeyid, sizeof(struct sctp_authkeyid)); 1281 &authkeyid, sizeof(struct sctp_authkeyid));
1299 if (ret < 0) 1282 if (ret < 0)
1300 break; 1283 break;
1301 } 1284 }