From 78446b42b7bed565dff75db73e8efcd3835808c0 Mon Sep 17 00:00:00 2001 From: Amitay Isaacs Date: Tue, 28 Feb 2012 17:01:27 +1100 Subject: s4-dns: Fix handling of TXT DNS Record --- source4/dns_server/dns_utils.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'source4/dns_server/dns_utils.c') diff --git a/source4/dns_server/dns_utils.c b/source4/dns_server/dns_utils.c index 4649e5ffca..1f7648cd5b 100644 --- a/source4/dns_server/dns_utils.c +++ b/source4/dns_server/dns_utils.c @@ -115,6 +115,9 @@ bool dns_name_equal(const char *name1, const char *name2) bool dns_records_match(struct dnsp_DnssrvRpcRecord *rec1, struct dnsp_DnssrvRpcRecord *rec2) { + bool status; + int i; + if (rec1->wType != rec2->wType) { return false; } @@ -128,7 +131,15 @@ bool dns_records_match(struct dnsp_DnssrvRpcRecord *rec1, case DNS_TYPE_CNAME: return dns_name_equal(rec1->data.cname, rec2->data.cname); case DNS_TYPE_TXT: - return strcmp(rec1->data.txt, rec2->data.txt) == 0; + if (rec1->data.txt.count != rec2->data.txt.count) { + return false; + } + status = true; + for (i=0; idata.txt.count; i++) { + status = status && (strcmp(rec1->data.txt.str[i], + rec2->data.txt.str[i]) == 0); + } + return status; case DNS_TYPE_PTR: return strcmp(rec1->data.ptr, rec2->data.ptr) == 0; case DNS_TYPE_NS: -- cgit