From 4ea9651624f85b005f7942bc069e60e391c93e2f Mon Sep 17 00:00:00 2001 From: Shchelkunov Artem Date: Fri, 20 Aug 2021 17:12:43 +0500 Subject: [PATCH] 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 --- util/tube.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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"); -- 2.39.5