From: Shchelkunov Artem Date: Fri, 20 Aug 2021 12:12:43 +0000 (+0500) Subject: Fix: log_assert does nothing if UNBOUND_DEBUG is undefined X-Git-Tag: release-1.14.0rc1~66^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ea9651624f85b005f7942bc069e60e391c93e2f;p=thirdparty%2Funbound.git Fix: log_assert does nothing if UNBOUND_DEBUG is undefined Found by static analyzer svace Static analyzer message: Integer value 'len' obtained from untrusted source at tube.c:374 by passing as 2nd parameter to function 'read' at tube.c:340 without checking its higher bound is used as a loop bound at tube.c:374. on-behalf-of: @ideco-team --- diff --git a/util/tube.c b/util/tube.c index dc6e3c2e7..8ff474b87 100644 --- a/util/tube.c +++ b/util/tube.c @@ -363,7 +363,11 @@ int tube_read_msg(struct tube* tube, uint8_t** buf, uint32_t* len, } d += r; } - log_assert(*len < 65536*2); + if (*len >= 65536*2) { + log_err("tube msg length is too big", *len); + (void)fd_set_nonblock(fd); + return 0; + } *buf = (uint8_t*)malloc(*len); if(!*buf) { log_err("tube read out of memory");