Skip to content

Zone07 can report a false warning #1500

Description

@pawal

I think I found a real bug in zonemaster-engine that can produce a false MNAME_HAS_NO_ADDRESS warning in Zone07. I tested with amplitut.de, where ns.amplitut.de clearly has both A and AAAA records, but Zone07 can still report that no IP was found for the SOA mname. Looking at the code, Zonemaster::Engine::Recursor->recurse() stores the lookup result in %recurse_cache even when the result is undef (zonemaster-engine/lib/Zonemaster/Engine/Recursor.pm:98-110). Later calls return that cached undef directly. In zone07(), an undef recurse result means no address gets counted, and this can end in MNAME_HAS_NO_ADDRESS even when the address exists (zonemaster-engine/lib/Zonemaster/Engine/Test/Zone.pm:1183-1217). My suggestion is to not cache undef recurse results, or at least treat cached undef as a cache miss and retry. This seems especially important because transient timeout/cancellation behavior can otherwise poison later checks in the same run.

See example of bug here (with gonemaster-fix):
https://codeberg.org/pawal/gonemaster/issues/25

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions