summaryrefslogtreecommitdiff
path: root/source3/libaddns
diff options
context:
space:
mode:
Diffstat (limited to 'source3/libaddns')
-rw-r--r--source3/libaddns/dnsrecord.c10
-rw-r--r--source3/libaddns/dnssock.c10
2 files changed, 14 insertions, 6 deletions
diff --git a/source3/libaddns/dnsrecord.c b/source3/libaddns/dnsrecord.c
index 37a5886af7..c649dbd7de 100644
--- a/source3/libaddns/dnsrecord.c
+++ b/source3/libaddns/dnsrecord.c
@@ -234,9 +234,13 @@ DNS_ERROR dns_unmarshall_tkey_record(TALLOC_CTX *mem_ctx, struct dns_rrec *rec,
if (!ERR_DNS_IS_OK(buf.error)) goto error;
- if (!(tkey->key = TALLOC_ARRAY(tkey, uint8, tkey->key_length))) {
- buf.error = ERROR_DNS_NO_MEMORY;
- goto error;
+ if (tkey->key_length) {
+ if (!(tkey->key = TALLOC_ARRAY(tkey, uint8, tkey->key_length))) {
+ buf.error = ERROR_DNS_NO_MEMORY;
+ goto error;
+ }
+ } else {
+ tkey->key = NULL;
}
dns_unmarshall_buffer(&buf, tkey->key, tkey->key_length);
diff --git a/source3/libaddns/dnssock.c b/source3/libaddns/dnssock.c
index 5dbedc4fd5..6ceefb4e32 100644
--- a/source3/libaddns/dnssock.c
+++ b/source3/libaddns/dnssock.c
@@ -264,9 +264,13 @@ static DNS_ERROR dns_receive_tcp(TALLOC_CTX *mem_ctx,
buf->size = ntohs(len);
- if (!(buf->data = TALLOC_ARRAY(buf, uint8, buf->size))) {
- TALLOC_FREE(buf);
- return ERROR_DNS_NO_MEMORY;
+ if (buf->size) {
+ if (!(buf->data = TALLOC_ARRAY(buf, uint8, buf->size))) {
+ TALLOC_FREE(buf);
+ return ERROR_DNS_NO_MEMORY;
+ }
+ } else {
+ buf->data = NULL;
}
err = read_all(conn->s, buf->data, buf->size);