⬢ DragonFlyBSD Kernel Audit
DF-5691 / run.log
← back to finding ↓ download raw
===== 1. matrix (plain same-source rig) =====
MATRIX: 2517 checks, 0 failures, 1 known(DF-2240-diff) rows
--- matrix exit=0

===== 2. nolife BASELINE (guard-page rig, stock prop_string.c) =====
== DF-5691 nolife (BASELINE: stock prop_string.c): trap=SIGSEGV on guard/freed page ==
T1: borrowed uuid=0x80050a000 into string storage
T1  dict-replace dangle (dm_dev_status pattern) -> TRAP(SIGSEGV)    OK
T1b: borrowed name=0x80048e000 uuid=0x80050a000
T1b both-keys replace (dm_table_deps pattern)  -> TRAP(SIGSEGV)    OK
T2: borrowed uuid=0x80048b000; releasing dict (last ref)
T2  dict-release dangle                        -> TRAP(SIGSEGV)    OK
T2b: string borrows owner=0x800485000; caller FREES it
T2b freed-buffer read via proplist ptr         -> TRAP(SIGSEGV)    OK
T2c: string borrows owner=0x800485000; caller REUSES the buffer
T2c: externalized:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>k</key>
	<string>PWNED-BY-BUFFER-REUSE</string>
</dict>
</plist>
T2c buffer-reuse externalize leak              -> exit=0 OK        OK
T3: ps_size=15 frozen; owner buffer now lengthened
T3  frozen ps_size strcpy overrun              -> TRAP(SIGSEGV)    OK
T4(control): externalize=<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>k</key>
	<string>control</string>
</dict>
</plist>
T4  control copy-variant                       -> exit=0 OK        OK
DML: borrowed name=0x80048e000 uuid=0x80050a000 (dm_ioctl.c:596-597)
DML: dict consistent after in-tree replace pattern; borrows 0x80048e000/0x80050a000 NOT dereferenced (latent)
DML in-tree dm sequence w/o deref (latent today) -> exit=0 OK        OK
NCD alive-read sanity                          -> exit=0 OK        OK
NOLIFE(base): all expectations met
--- nolife baseline exit=0

===== 3. nolife FIXED (guard-page rig + fix.diff) =====
== DF-5691 nolife (FIXED: nocopy-create copies): trap=SIGSEGV on guard/freed page ==
T1: borrowed uuid=0x80050a000 into string storage
T1  dict-replace dangle (dm_dev_status pattern) -> TRAP(SIGSEGV)    OK
T1b: borrowed name=0x80048e000 uuid=0x80050a000
T1b both-keys replace (dm_table_deps pattern)  -> TRAP(SIGSEGV)    OK
T2: borrowed uuid=0x80048b000; releasing dict (last ref)
T2  dict-release dangle                        -> TRAP(SIGSEGV)    OK
T2b: string borrows owner=0x800485000; caller FREES it
T2b: NO TRAP, intact content "transient-buffer"
T2b freed-buffer read via proplist ptr         -> exit=0 OK        OK
T2c: string borrows owner=0x800485000; caller REUSES the buffer
T2c: externalized:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>k</key>
	<string>transient-buffer</string>
</dict>
</plist>
T2c buffer-reuse externalize leak              -> exit=3           OK
T3: ps_size=15 frozen; owner buffer now lengthened
T3: NO TRAP copy=BBBBBBBBBBBBBBB... (len=15)
T3  frozen ps_size strcpy overrun              -> exit=0 OK        OK
T4(control): externalize=<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>k</key>
	<string>control</string>
</dict>
</plist>
T4  control copy-variant                       -> exit=0 OK        OK
DML: borrowed name=0x80048e000 uuid=0x80050a000 (dm_ioctl.c:596-597)
DML: dict consistent after in-tree replace pattern; borrows 0x80048e000/0x80050a000 NOT dereferenced (latent)
DML in-tree dm sequence w/o deref (latent today) -> exit=0 OK        OK
NCD alive-read sanity                          -> exit=0 OK        OK
NOLIFE(fixed): all expectations met
--- nolife fixed exit=0