diff options
Diffstat (limited to 'wire2host.c')
| -rw-r--r-- | wire2host.c | 8 |
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); |
