From c96b4fc946407b9e1701a0b2c9b67339165ab1f5 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 23 Aug 2021 14:10:01 +0100 Subject: [PATCH] [Minor] Rdns: One more sanity check added --- contrib/librdns/parse.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/contrib/librdns/parse.c b/contrib/librdns/parse.c index 559d430a0e..18bb6a6946 100644 --- a/contrib/librdns/parse.c +++ b/contrib/librdns/parse.c @@ -370,6 +370,16 @@ rdns_parse_rr (struct rdns_resolver *resolver, *remain -= txtlen + 1; } else { + + if (txtlen + copied + parts > datalen) { + /* Incorrect datalen reported ! */ + rdns_err ("incorrect txtlen (%d) > datalen (%d) reported; domain %s", + (txtlen + copied + parts), datalen, + rep->requested_name); + return -1; + } + + /* Reported equal to the actual data copied */ break; } } @@ -425,7 +435,7 @@ rdns_parse_rr (struct rdns_resolver *resolver, *remain -= datalen; break; default: - rdns_debug ("unexpected RR type: %d; domain %s", type, rep->requested_name); + rdns_info ("unexpected RR type: %d; domain %s", type, rep->requested_name); p += datalen; *remain -= datalen; break;