]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
still sorting
authorJelte Jansen <jeltejan@NLnetLabs.nl>
Tue, 15 Nov 2005 13:40:54 +0000 (13:40 +0000)
committerJelte Jansen <jeltejan@NLnetLabs.nl>
Tue, 15 Nov 2005 13:40:54 +0000 (13:40 +0000)
dname.c

diff --git a/dname.c b/dname.c
index 15adba842ed3c5ac119b88a0f6c49d739ab5301a..4ab9ceda694f6411b5c382ba57b5c95ea2627cd2 100644 (file)
--- a/dname.c
+++ b/dname.c
@@ -227,18 +227,22 @@ ldns_dname_compare(const ldns_rdf *dname1, const ldns_rdf *dname2)
        while (true) {
                label1 = ldns_dname_label(dname1, lc1);
                label2 = ldns_dname_label(dname2, lc2);
-               if (ldns_rdf_size(label1) < ldns_rdf_size(label2)) {
-                       return -1;
-               } else if (ldns_rdf_size(label1) > ldns_rdf_size(label2)) {
-                       return 1;
-               } else {
-                       for (i = 0; i < ldns_rdf_size(label1); i++) {
-                               if (ldns_rdf_data(label1)[i] < ldns_rdf_data(label2)[i]) {
-                                       return -1;
-                               } else if (ldns_rdf_data(label1)[i] > ldns_rdf_data(label2)[i]) {
-                                       return 1;
-                               }
+               ldns_dname2canonical(label1);
+               ldns_dname2canonical(label2);
+
+               for (i = 1; i < ldns_rdf_size(label1); i++) {
+                       if (i >= ldns_rdf_size(label2)) {
+                               return 1;
                        }
+
+                       if (ldns_rdf_data(label1)[i] < ldns_rdf_data(label2)[i]) {
+                               return -1;
+                       } else if (ldns_rdf_data(label1)[i] > ldns_rdf_data(label2)[i]) {
+                               return 1;
+                       }
+               }
+               if (i < ldns_rdf_size(label2) - 1) {
+                       return -1;
                }
                if (lc1 == 0 && lc2 > 0) {
                        return -1;