From 7df533b4f344d414f3817fc16430bec51d35d146 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Sun, 23 Nov 2008 12:56:20 +0200 Subject: [PATCH] Packet engine: moved packet sanity checks after MAC check --- lib/silccore/silcpacket.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/silccore/silcpacket.c b/lib/silccore/silcpacket.c index f552ca6d..8b68c5ed 100644 --- a/lib/silccore/silcpacket.c +++ b/lib/silccore/silcpacket.c @@ -2197,17 +2197,6 @@ static void silc_packet_read_process(SilcPacketStream stream) /* Get packet length and full packet length with padding */ SILC_PACKET_LENGTH(header, packetlen, paddedlen); - /* Sanity checks */ - if (silc_unlikely(packetlen < SILC_PACKET_MIN_LEN)) { - if (!stream->udp && !silc_socket_stream_is_udp(stream->stream, NULL)) - SILC_LOG_ERROR(("Received too short packet")); - silc_mutex_unlock(stream->lock); - SILC_PACKET_CALLBACK_ERROR(stream, SILC_PACKET_ERR_MALFORMED); - silc_mutex_lock(stream->lock); - memset(tmp, 0, sizeof(tmp)); - goto out; - } - if (silc_buffer_len(inbuf) < paddedlen + ivlen + mac_len) { SILC_LOG_DEBUG(("Received partial packet, waiting for the rest " "(%d bytes)", @@ -2231,6 +2220,17 @@ static void silc_packet_read_process(SilcPacketStream stream) goto out; } + /* Sanity checks */ + if (silc_unlikely(packetlen < SILC_PACKET_MIN_LEN)) { + if (!stream->udp && !silc_socket_stream_is_udp(stream->stream, NULL)) + SILC_LOG_ERROR(("Received too short packet")); + silc_mutex_unlock(stream->lock); + SILC_PACKET_CALLBACK_ERROR(stream, SILC_PACKET_ERR_MALFORMED); + silc_mutex_lock(stream->lock); + memset(tmp, 0, sizeof(tmp)); + goto out; + } + /* Get packet */ packet = silc_packet_alloc(stream->sc->engine); if (silc_unlikely(!packet)) { -- 2.24.0