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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions