⬢ DragonFlyBSD Kernel Audit
DF-4750 / fix_run.log
← back to finding ↓ download raw
+ find /usr/obj/usr/src/sys/dev/misc/nmdm -name nmdm.ko -ls
 96930       16 -rw-r--r--    1 root                             wheel                                9544 Sep 23 08:40 /usr/obj/usr/src/sys/dev/misc/nmdm/nmdm.ko
+ find /usr/obj/usr/src/sys/dev/misc/nmdm -name nmdm.ko
+ head -1
+ KO=/usr/obj/usr/src/sys/dev/misc/nmdm/nmdm.ko
+ cp -p /usr/obj/usr/src/sys/dev/misc/nmdm/nmdm.ko /boot/kernel/nmdm.ko
+ kldunload nmdm
+ kldload nmdm
+ ls -l /dev/nmdm0A /dev/nmdm0B
crw-rw-rw-  1 root  wheel   32, 0x00000000 Sep 23 08:30 /dev/nmdm0A
crw-rw-rw-  1 root  wheel   32, 0x00000001 Sep 23 08:30 /dev/nmdm0B
+ echo '=== PATCHED MODULE: DF-4750 check (unpriv maxx) ==='
+ su maxx -c /tmp/nmdm_probe
=== PATCHED MODULE: DF-4750 check (unpriv maxx) ===
== DF-4749: reopen of an open nmdm half ==
open#1(/dev/nmdm0A)          = 3  [ok, TS_ISOPEN set]
open#2(/dev/nmdm0A)          = 4  [correct: reopen allowed]
open#3 after close(#1)       = 3  [ok: fresh first-open works, proves EBUSY above came from the pt_prison check]

== DF-4750: TIOCCDTR inverted mask ==
TIOCMSET(LE|DTR|RTS)         = 0
TIOCMGET after SET           = 0x0007 (LE=1 DTR=1 RTS=1)
TIOCCDTR                     = 0
TIOCMGET after TIOCCDTR      = 0x0005 -> DTR=clear [correct] RTS=SET [correct]
=== PATCHED MODULE: DF-4749 jail check ===
+ echo '=== PATCHED MODULE: DF-4749 jail check ==='
+ rm -f /tmp/holderjail.log /tmp/holdermaxx.log
+ sleep 3
+ jail / nmdmj2 127.0.0.1 /bin/sh -c '/tmp/holder /dev/nmdm0A > /tmp/holderjail.log 2>&1 & sleep 1; cat /tmp/holderjail.log; echo "-- same-jail reopen (expect open#1 OK now):"; /tmp/nmdm_probe || true'
holder: open(/dev/nmdm0A)=3 holding 60s
-- same-jail reopen (expect open#1 OK now):
== DF-4749: reopen of an open nmdm half ==
open#1(/dev/nmdm0A)          = 3  [ok, TS_ISOPEN set]
open#2(/dev/nmdm0A)          = 4  [correct: reopen allowed]
open#3 after close(#1)       = 3  [ok: fresh first-open works, proves EBUSY above came from the pt_prison check]

== DF-4750: TIOCCDTR inverted mask ==
TIOCMSET(LE|DTR|RTS)         = 0
TIOCMGET after SET           = 0x0007 (LE=1 DTR=1 RTS=1)
TIOCCDTR                     = 0
TIOCMGET after TIOCCDTR      = 0x0005 -> DTR=clear [correct] RTS=SET [correct]
-- unjailed unpriv attach to jail-held half (expect EBUSY now):
+ echo '-- unjailed unpriv attach to jail-held half (expect EBUSY now):'
+ su maxx -c '/tmp/holder /dev/nmdm0A > /tmp/holdermaxx.log 2>&1; cat /tmp/holdermaxx.log'
holder: open(/dev/nmdm0A) FAILED: Device busy
+ pkill -f 'holder /dev/nmdm0A'
DONE
+ echo DONE