diff --git a/dtls.c b/dtls.c index e7c3492..6e82933 100644 --- a/dtls.c +++ b/dtls.c @@ -315,7 +315,8 @@ void *dtlsservernew(void *arg) { } timeout.tv_sec = 5; timeout.tv_usec = 0; - BIO_ctrl(SSL_get_rbio(params->ssl), BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, &timeout); + if (BIO_ctrl(SSL_get_rbio(params->ssl), BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, &timeout) == -1) + debug(DBG_WARN, "dtlsservernew: BIO_CTRL_DGRAM_SET_RECV_TIMEOUT failed"); conf = find_clconf(handle, (struct sockaddr *)¶ms->addr, NULL); if (!conf) @@ -573,8 +574,8 @@ int dtlsconnect(struct server *server, struct timeval *when, int timeout, char * } socktimeout.tv_sec = 5; socktimeout.tv_usec = 0; - BIO_ctrl(bio, BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, &socktimeout); - + if (BIO_ctrl(bio, BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, &socktimeout) == -1) + debug(DBG_WARN, "dtlsconnect: BIO_CTRL_DGRAM_SET_RECV_TIMEOUT failed"); debug(DBG_DBG, "dtlsconnect: DTLS: ok"); cert = verifytlscert(server->ssl); diff --git a/tlscommon.c b/tlscommon.c index f8853af..d271645 100644 --- a/tlscommon.c +++ b/tlscommon.c @@ -172,7 +172,7 @@ static int cookie_generate_cb(SSL *ssl, unsigned char *cookie, unsigned int *coo cookie_secret_initialized = 1; } - if(BIO_dgram_get_peer(SSL_get_rbio(ssl), &peer) < 0) + if (BIO_dgram_get_peer(SSL_get_rbio(ssl), &peer) <= 0) return 0; gettimeofday(&now, NULL); if (!cookie_calculate_hash((struct sockaddr *)&peer, now.tv_sec, result, &resultlength)) @@ -211,7 +211,8 @@ static int cookie_verify_cb(SSL *ssl, const unsigned char *cookie, unsigned int return 0; } - BIO_dgram_get_peer(SSL_get_rbio(ssl), &peer); + if (BIO_dgram_get_peer(SSL_get_rbio(ssl), &peer) <= 0) + return 0; if (!cookie_calculate_hash((struct sockaddr *)&peer, cookie_time, result, &resultlength)) return 0;