]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
HINFO not downcased any more
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 6 Jan 2009 14:49:26 +0000 (14:49 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 6 Jan 2009 14:49:26 +0000 (14:49 +0000)
git-svn-id: file:///svn/unbound/trunk@1410 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
testdata/test_signatures.12
validator/val_sigcrypt.c

index 5ebf27f8bc3187d9ebb731dc1647455b123d4470..c417b3e83abd68ac9d4b15ec5261d26402ec918a 100644 (file)
@@ -6,6 +6,8 @@
          queries with different type could get nxdomain. Now queries
          with a different name get resolved normally, with different type
          get a correct NOERROR/NODATA answer.
+       - HINFO no longer downcased for validation, making unbound compatible
+         with bind and ldns.
 
 5 January 2009: Wouter
        - fixup getaddrinfo failure handling for remote control port.
index 0f168e60c08a1bd64024ce6d0c10318412a00311..eb4d594abc37ee661896fa860e62db8ad2f4636e 100644 (file)
@@ -27,7 +27,7 @@ ENTRY_END
 ; HINFO record signed with ldns, HINFO in uppercase, signature uppercase
 ENTRY_BEGIN
 SECTION QUESTION
-bogus.jelte.nlnetlabs.nl.    IN      HINFO
+jelte.nlnetlabs.nl.    IN      HINFO
 SECTION ANSWER
 jelte.nlnetlabs.nl.    3600    IN      HINFO   "Jelte" "Machine van"
 jelte.nlnetlabs.nl.    3600    IN      RRSIG   HINFO 5 3 3600 20090203100022 20090106100022 48885 jelte.nlnetlabs.nl. eRig3NjIIgBTmQiN7AREmplgiY6OOtVwCNZgF5UAoYFAE1K1tl5WLqe9 FmTcVtaNUzFdgYv+TD93NNYdV0uxJkr+rS2sSykGf9OIlxevFm+rW2ya 4/Y+5GIN77eN9q9/6ULQRdsX3p8w1fhloiDXk+tgCaw+cJJElMEE1Avw 2dY=
@@ -47,7 +47,7 @@ ENTRY_END
 ; (signer canonicalised)
 ENTRY_BEGIN
 SECTION QUESTION
-jelte.nlnetlabs.nl.    IN      HINFO
+bogus.jelte.nlnetlabs.nl.    IN      HINFO
 SECTION ANSWER
 jelte.nlnetlabs.nl.    3600    IN      HINFO   "Jelte" "Machine van"
 jelte.nlnetlabs.nl.    3600    IN      RRSIG   HINFO 5 3 3600 20090203105558 20090106105558 48885 jelte.nlnetlabs.nl. UwFKSqH9oau3nCdJ4i6iYamo2izgMCKy1K8ec0IkhniUONKaIGiRNz8/ QrLAeBHhMnLQYNV/GBprNjvnPyYLG/6bWYUBxvP6pCG4oDEmNY7QF9di I6So5Ycv0ZWaYoT/NYStUj1fLNZ4xCdNXVLA7Oi5PRMeOvPQIvMG3hHK Ja0=
index ce21f932d92153c9f51d3d1b4c86f23fbf510459..708afebb3c78d233e43986ea9a1e00161c3b638e 100644 (file)
@@ -551,57 +551,6 @@ struct canon_rr {
        size_t rr_idx;
 };
 
-/**
- * Compare HINFO rrsets. For them, the string length bytes are not lowercased,
- * but the string contents are lowercased.
- *
- * This routine works for any 'all STR' RR type. It works similar to the
- * compare_byfield routine, but stripped down, and modified to lowercase
- * STR fields.
- *
- * @param d: rrset data
- * @param i: first RR to compare
- * @param j: first RR to compare
- * @return comparison code.
- */
-static int
-canonical_compare_hinfo(struct packed_rrset_data* d, size_t i, size_t j)
-{
-       uint8_t* di = d->rr_data[i]+2; /* ptr to current rdata byte */
-       uint8_t* dj = d->rr_data[j]+2;
-       size_t ilen = d->rr_len[i]-2; /* length left in rdata */
-       size_t jlen = d->rr_len[j]-2;
-       size_t strlen_i = 0;
-       size_t strlen_j = 0;
-       while(ilen > 0 && jlen > 0) {
-               /* compare this pair of bytes */
-               if( ((strlen_i)?(uint8_t)tolower((int)*di):*di)
-                != ((strlen_j)?(uint8_t)tolower((int)*dj):*dj)
-                ) {
-                 if(((strlen_i)?(uint8_t)tolower((int)*di):*di)
-                 < ((strlen_j)?(uint8_t)tolower((int)*dj):*dj))
-                       return -1;
-                   return 1;
-               }
-               ilen --;
-               jlen --;
-               /* read length byte of the string in rdata if strlen=0 */
-               if(strlen_i == 0) {
-                       strlen_i = (size_t)*di;
-               } else  strlen_i--;
-               if(strlen_j == 0) {
-                       strlen_j = (size_t)*dj;
-               } else  strlen_j--;
-               di++;
-               dj++;
-       }
-       if(ilen == 0 && jlen == 0)
-               return 0;
-       if(ilen == 0)
-               return -1;
-       return 1;
-}
-
 /**
  * Compare two RR for canonical order, in a field-style sweep.
  * @param d: rrset data
@@ -807,11 +756,7 @@ canonical_compare(struct ub_packed_rrset_key* rrset, size_t i, size_t j)
                        log_assert(desc->_minimum == desc->_maximum);
                        return canonical_compare_byfield(d, desc, i, j);
 
-               /* This RR type is special, as the contents of text fields
-                * is lowercased. */
-               case LDNS_RR_TYPE_HINFO:
-                       return canonical_compare_hinfo(d, i, j);
-
+               case LDNS_RR_TYPE_HINFO: /* no longer downcased */
                case LDNS_RR_TYPE_NSEC: 
                case LDNS_RR_TYPE_RRSIG:
        default:
@@ -957,18 +902,6 @@ canonicalize_rdata(ldns_buffer* buf, struct ub_packed_rrset_key* rrset,
                        query_dname_tolower(datstart + 
                                dname_valid(datstart, len-2));
                        return;
-               case LDNS_RR_TYPE_HINFO:
-                       /* lowercase text records */
-                       len -= 2;
-                       if(len < (size_t)datstart[0]+1)
-                               return;
-                       lowercase_text_field(datstart);
-                       len -= (size_t)datstart[0]+1; /* and skip the 1st */
-                       datstart += (size_t)datstart[0]+1;
-                       if(len < (size_t)datstart[0]+1)
-                               return;
-                       lowercase_text_field(datstart);
-                       return;
                case LDNS_RR_TYPE_RT:
                case LDNS_RR_TYPE_AFSDB:
                case LDNS_RR_TYPE_KX:
@@ -1028,6 +961,7 @@ canonicalize_rdata(ldns_buffer* buf, struct ub_packed_rrset_key* rrset,
                /* do not canonicalize NSEC rdata name, compat with bug
                 * from bind 9.4 signer, where it does not do so */
                case LDNS_RR_TYPE_NSEC: /* type starts with the name */
+               case LDNS_RR_TYPE_HINFO: /* not downcased */
                /* A6 not supported */
                default:        
                        /* nothing to do for unknown types */