aboutsummaryrefslogtreecommitdiff
path: root/contrib/ldns/wire2host.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ldns/wire2host.c')
-rw-r--r--contrib/ldns/wire2host.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/contrib/ldns/wire2host.c b/contrib/ldns/wire2host.c
index 680d2f9dcb70..91d3f1364d75 100644
--- a/contrib/ldns/wire2host.c
+++ b/contrib/ldns/wire2host.c
@@ -59,7 +59,6 @@ ldns_wire2dname(ldns_rdf **dname, const uint8_t *wire, size_t max, size_t *pos)
uint16_t pointer_target;
uint8_t pointer_target_buf[2];
size_t dname_pos = 0;
- size_t uncompressed_length = 0;
size_t compression_pos = 0;
uint8_t tmp_dname[LDNS_MAX_DOMAINLEN];
unsigned int pointer_count = 0;
@@ -120,7 +119,6 @@ ldns_wire2dname(ldns_rdf **dname, const uint8_t *wire, size_t max, size_t *pos)
return LDNS_STATUS_DOMAINNAME_OVERFLOW;
}
memcpy(&tmp_dname[dname_pos], &wire[*pos], label_size);
- uncompressed_length += label_size + 1;
dname_pos += label_size;
*pos = *pos + label_size;
@@ -272,6 +270,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 +309,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 +411,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 +467,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);