s4-rpc: dnsserver: Fix removal of trailing '.' in soa mname
[obnox/samba/samba-obnox.git] / source4 / rpc_server / dnsserver / dnsdata.c
index c8ac58d8bd15455fc79db7ce02ea5511dc35668c..87b7d87ae3b4e681b95e649204c0f64bca816248 100644 (file)
@@ -412,9 +412,9 @@ struct dnsp_DnssrvRpcRecord *dns_to_dnsp_copy(TALLOC_CTX *mem_ctx, struct DNS_RP
 
                len = dns->data.soa.NamePrimaryServer.len;
                if (dns->data.soa.NamePrimaryServer.str[len-1] == '.') {
-                       dnsp->data.soa.mname = talloc_strdup(mem_ctx, dns->data.soa.NamePrimaryServer.str);
-               } else {
                        dnsp->data.soa.mname = talloc_strndup(mem_ctx, dns->data.soa.NamePrimaryServer.str, len-1);
+               } else {
+                       dnsp->data.soa.mname = talloc_strdup(mem_ctx, dns->data.soa.NamePrimaryServer.str);
                }
 
                len = dns->data.soa.ZoneAdministratorEmail.len;
@@ -952,10 +952,10 @@ bool dns_record_match(struct dnsp_DnssrvRpcRecord *rec1, struct dnsp_DnssrvRpcRe
                return strcmp(rec1->data.ipv4, rec2->data.ipv4) == 0;
 
        case DNS_TYPE_NS:
-               return dns_name_equal(rec1->data.ns, rec1->data.ns);
+               return dns_name_equal(rec1->data.ns, rec2->data.ns);
 
        case DNS_TYPE_CNAME:
-               return dns_name_equal(rec1->data.cname, rec1->data.cname);
+               return dns_name_equal(rec1->data.cname, rec2->data.cname);
 
        case DNS_TYPE_SOA:
                return dns_name_equal(rec1->data.soa.mname, rec2->data.soa.mname) == 0 &&
@@ -970,8 +970,8 @@ bool dns_record_match(struct dnsp_DnssrvRpcRecord *rec1, struct dnsp_DnssrvRpcRe
                return dns_name_equal(rec1->data.ptr, rec2->data.ptr);
 
        case DNS_TYPE_MX:
-               return rec1->data.mx.wPriority == rec2->data.srv.wPriority &&
-                       dns_name_equal(rec1->data.mx.nameTarget, rec2->data.srv.nameTarget);
+               return rec1->data.mx.wPriority == rec2->data.mx.wPriority &&
+                       dns_name_equal(rec1->data.mx.nameTarget, rec2->data.mx.nameTarget);
 
        case DNS_TYPE_TXT:
                if (rec1->data.txt.count != rec2->data.txt.count) {