diff options
| author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2026-07-22 12:15:55 +0000 |
|---|---|---|
| committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2026-07-22 12:15:55 +0000 |
| commit | c68e7bcd81d62e9f5364c6da22fd9917976acf85 (patch) | |
| tree | 47fef24c9b7ae049d7afe24404d07a93e4ea7d8e /util/data/msgparse.c | |
| parent | 22e58f330a151944c24e010d23ec3881df6681b6 (diff) | |
Diffstat (limited to 'util/data/msgparse.c')
| -rw-r--r-- | util/data/msgparse.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/util/data/msgparse.c b/util/data/msgparse.c index 9239f8fe396a..4be1a72dcb5a 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -687,6 +687,9 @@ calc_size(sldns_buffer* pkt, uint16_t type, struct rr_parse* rr) } rdf++; } + /* rdata ended before all _dname_count names were seen */ + if(count != 0) + return 0; /* the rdata is too short. */ } /* remaining rdata */ rr->size += pkt_len; @@ -1068,13 +1071,13 @@ parse_edns_options_from_query(uint8_t* rdata_ptr, size_t rdata_len, * purposes. It will be overwritten if (re)creation * is needed. */ - if(repinfo->remote_addr.ss_family == AF_INET) { + if(repinfo->client_addr.ss_family == AF_INET) { memcpy(server_cookie + 16, - &((struct sockaddr_in*)&repinfo->remote_addr)->sin_addr, 4); + &((struct sockaddr_in*)&repinfo->client_addr)->sin_addr, 4); } else { cookie_is_v4 = 0; memcpy(server_cookie + 16, - &((struct sockaddr_in6*)&repinfo->remote_addr)->sin6_addr, 16); + &((struct sockaddr_in6*)&repinfo->client_addr)->sin6_addr, 16); } if(cfg->cookie_secret_file && |
