summaryrefslogtreecommitdiff
path: root/util/data/msgparse.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/data/msgparse.c')
-rw-r--r--util/data/msgparse.c9
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 &&