From: Nikos Mavrogiannopoulos Date: Thu, 8 May 2014 14:59:21 +0000 (+0200) Subject: Small cleanups in packet receive as well as a memory leak error. X-Git-Tag: gnutls_3_3_3~84 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ead4581ff54f8e42405fb580e3f549fc8f7fc58c;p=thirdparty%2Fgnutls.git Small cleanups in packet receive as well as a memory leak error. The memory leak was uncovered by the Codenomicon TLS suite. --- diff --git a/lib/gnutls_buffers.c b/lib/gnutls_buffers.c index 29c67eac56..1f4f3d6021 100644 --- a/lib/gnutls_buffers.c +++ b/lib/gnutls_buffers.c @@ -65,7 +65,7 @@ /* Buffers received packets of type APPLICATION DATA, * HANDSHAKE DATA and HEARTBEAT. */ -int +void _gnutls_record_buffer_put(gnutls_session_t session, content_type_t type, uint64 * seq, mbuffer_st * bufel) @@ -78,7 +78,7 @@ _gnutls_record_buffer_put(gnutls_session_t session, _gnutls_buffers_log("BUF[REC]: Inserted %d bytes of Data(%d)\n", (int) bufel->msg.size, (int) type); - return 0; + return; } /** diff --git a/lib/gnutls_buffers.h b/lib/gnutls_buffers.h index 887403f51c..9846b26686 100644 --- a/lib/gnutls_buffers.h +++ b/lib/gnutls_buffers.h @@ -24,7 +24,7 @@ #define MBUFFER_FLUSH 1 -int +void _gnutls_record_buffer_put(gnutls_session_t session, content_type_t type, uint64 * seq, mbuffer_st * bufel); diff --git a/lib/gnutls_record.c b/lib/gnutls_record.c index 8c80a22c1e..9943756cb5 100644 --- a/lib/gnutls_record.c +++ b/lib/gnutls_record.c @@ -784,10 +784,10 @@ record_add_to_buffers(gnutls_session_t session, break; case GNUTLS_CHANGE_CIPHER_SPEC: - if (!(IS_DTLS(session))) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + if (!(IS_DTLS(session))) { + ret = gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET); + goto cleanup; + } _gnutls_record_buffer_put(session, recv->type, seq, bufel); @@ -818,16 +818,8 @@ record_add_to_buffers(gnutls_session_t session, || (htype == GNUTLS_HANDSHAKE_CLIENT_HELLO && type == GNUTLS_HANDSHAKE)) { /* even if data is unexpected put it into the buffer */ - if ((ret = - _gnutls_record_buffer_put(session, - recv->type, - seq, - bufel)) < - 0) { - gnutls_assert(); - goto cleanup; - } - + _gnutls_record_buffer_put(session, recv->type, + seq, bufel); return gnutls_assert_val (GNUTLS_E_GOT_APPLICATION_DATA); @@ -891,14 +883,9 @@ record_add_to_buffers(gnutls_session_t session, && bufel->htype == GNUTLS_HANDSHAKE_CLIENT_HELLO) { gnutls_assert(); - ret = - _gnutls_record_buffer_put(session, + _gnutls_record_buffer_put(session, recv->type, seq, bufel); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } return GNUTLS_E_REHANDSHAKE; } @@ -1296,9 +1283,9 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, goto begin; } - if (record.v2) + if (record.v2) { decrypted->htype = GNUTLS_HANDSHAKE_CLIENT_HELLO_V2; - else { + } else { uint8_t *p = _mbuffer_get_udata_ptr(decrypted); decrypted->htype = p[0]; } @@ -1307,7 +1294,7 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, record_add_to_buffers(session, &record, type, htype, packet_sequence, decrypted); - /* bufel is now either deinitialized or buffered somewhere else */ + /* decrypted is now either deinitialized or buffered somewhere else */ if (ret < 0) return gnutls_assert_val(ret);