From: Jelte Jansen Date: Tue, 15 Nov 2005 13:40:54 +0000 (+0000) Subject: still sorting X-Git-Tag: release-1.1.0~620 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4fd04450ff7292c0f28188d2d18b077564765240;p=thirdparty%2Fldns.git still sorting --- diff --git a/dname.c b/dname.c index 15adba84..4ab9ceda 100644 --- 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;