aboutsummaryrefslogtreecommitdiff
path: root/wire2host.c
diff options
context:
space:
mode:
Diffstat (limited to 'wire2host.c')
-rw-r--r--wire2host.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/wire2host.c b/wire2host.c
index 680d2f9dcb70..63b67a0d1713 100644
--- a/wire2host.c
+++ b/wire2host.c
@@ -272,6 +272,8 @@ ldns_wire2rdf(ldns_rr *rr, const uint8_t *wire, size_t max, size_t *pos)
case LDNS_RDF_TYPE_ATMA:
case LDNS_RDF_TYPE_IPSECKEY:
case LDNS_RDF_TYPE_LONG_STR:
+ case LDNS_RDF_TYPE_AMTRELAY:
+ case LDNS_RDF_TYPE_SVCPARAMS:
case LDNS_RDF_TYPE_NONE:
/*
* Read to end of rr rdata
@@ -309,7 +311,6 @@ ldns_wire2rdf(ldns_rr *rr, const uint8_t *wire, size_t max, size_t *pos)
return LDNS_STATUS_OK;
}
-
/* TODO:
can *pos be incremented at READ_INT? or maybe use something like
RR_CLASS(wire)?
@@ -412,6 +413,10 @@ ldns_wire2pkt(ldns_pkt **packet_p, const uint8_t *wire, size_t max)
uint8_t data[4];
+ if (!packet) {
+ return LDNS_STATUS_MEM_ERR;
+ }
+
status = ldns_wire2pkt_hdr(packet, wire, max, &pos);
LDNS_STATUS_CHECK_GOTO(status, status_error);
@@ -464,6 +469,7 @@ ldns_wire2pkt(ldns_pkt **packet_p, const uint8_t *wire, size_t max)
ldns_pkt_set_edns_z(packet, ldns_read_uint16(&data[2]));
/* edns might not have rdfs */
if (ldns_rr_rdf(rr, 0)) {
+ ldns_rdf_deep_free(ldns_pkt_edns_data(packet));
ldns_pkt_set_edns_data(packet, ldns_rdf_clone(ldns_rr_rdf(rr, 0)));
}
ldns_rr_free(rr);