diff options
Diffstat (limited to 'contrib/librdns')
-rw-r--r-- | contrib/librdns/parse.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/contrib/librdns/parse.c b/contrib/librdns/parse.c index 559d430a0..18bb6a694 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; |