• Simon Kelley's avatar
    Handle duplicate RRs in DNSSEC validation. · e5412459
    Simon Kelley authored
    RFC 4034 says:
      [RFC2181] specifies that an RRset is not allowed to contain duplicate
      records (multiple RRs with the same owner name, class, type, and
      RDATA).  Therefore, if an implementation detects duplicate RRs when
      putting the RRset in canonical form, it MUST treat this as a protocol
      error.  If the implementation chooses to handle this protocol error
      in the spirit of the robustness principle (being liberal in what it
      accepts), it MUST remove all but one of the duplicate RR(s) for the
      purposes of calculating the canonical form of the RRset.
    
    We chose to handle this robustly, having found at least one recursive
    server in the wild which returns duplicate NSEC records in the AUTHORITY
    section of an answer generated from a wildcard record. sort_rrset() is
    therefore modified to delete duplicate RRs which are detected almost
    for free during the bubble-sort process.
    
    Thanks to Toralf Förster for helping to diagnose this problem.
    e5412459
dnssec.c 54.2 KB