NLnetLabs/nsd

SIGSEGV in rbtree_find_less_equal

Closed this issue · 1 comments

As reported on nsd-users.

Reproducible seg fault with a DNSSEC signed zone and overlapping config. Running NSD 4.10.1. Here's how to reproduce.

2 zones in nsd.conf:

zone:
        name:     "foo.com."
        zonefile:     "/zones/foo.com.zone.signed"

zone:
        name:     "bar.foo.com."
        zonefile: "/zones/bar.foo.com.zone"

Zone files:
foo.com.zone.signed is DNSSEC signed with a record for a.bar (A record or anything)
bar.foo.com.zone doesn't exist (but it's in nsd.conf shown above)

Steps:

  1. Startup NSD
  2. touch foo.com.zone.signed
  3. reload NSD

nsd.log will say:

[2024-10-02 07:19:58.691] nsd[962739]: info: control cmd:  reload
[2024-10-02 07:19:58.845] nsd[962752]: error: handle_reload_cmd: reload closed cmd channel
[2024-10-02 07:19:58.845] nsd[962752]: warning: Reload process 962740 failed, continuing with old database

core dump says SIGSEGV in rbtree_find_less_equal

The issue can be successfully reproduced using a debug build and the attached configuration.
nsd.conf
foo.com.zone.signed