DragonFlyBSD Kernel Audit
DF-0671 / fix_run.log
← back to finding ↓ download raw
===== DF-0671 FIXED (depth-bounded recursion): kldload nb_recurse.ko (bound=1) =====
DF0671: replicating nbssn_rq_request self-recursion (smb_trantcp.c:265) bound=1 (1=fixed/depth-bounded, 0=baseline/unbounded)
DF0671: returned cleanly levels=3 (bound held, no stack overflow)

=> With the depth bound (depth >= NBNS_MAXREDIRECTS => return ECONNREFUSED), the
   recursion stops after 3 levels and returns cleanly. No stack overflow, no panic.

The real fix.diff additionally builds cleanly into the smbfs.ko module (which bundles
smb_trantcp.c); see build.log. The fix also initializes the retarget sockaddr
(sin_len/sin_family) which previously was uninitialized stack garbage.