From c00a5d0723bf1cfa364244d4cafddfe8ee60b180 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Tue, 14 Jul 2020 14:29:09 +0200 Subject: [PATCH] Add maximum to received frame streams frames. --- dnstap/dtstream.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index f5fae08dc..030b66eee 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -69,6 +69,9 @@ /** the msec to wait for reconnect slow, to stop busy spinning on reconnect */ #define DTIO_RECONNECT_TIMEOUT_SLOW 1000 +/** maximum length of received frame */ +#define DTIO_RECV_FRAME_MAX_LEN 1000 + struct stop_flush_info; /** DTIO command channel commands */ enum { @@ -1031,6 +1034,12 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) continue; } dtio->read_frame.frame_len = ntohl(dtio->read_frame.frame_len); + if(dtio->read_frame.frame_len > DTIO_RECV_FRAME_MAX_LEN) { + verbose(VERB_OPS, "dnstap: received frame exceeds max " + "length, capped to %d bytes", + DTIO_RECV_FRAME_MAX_LEN); + dtio->read_frame.frame_len = DTIO_RECV_FRAME_MAX_LEN; + } dtio->read_frame.buf = calloc(1, dtio->read_frame.frame_len); dtio->read_frame.buf_cap = dtio->read_frame.frame_len; if(!dtio->read_frame.buf) { -- 2.47.3