DragonFlyBSD Kernel Audit
DF-0782 / fix_run.log
← back to finding ↓ download raw
=== DF-0782 fix validation: run on PATCHED fuse.ko (3/3 deterministic) ===
Patched fuse.ko built from /usr/src/sys/vfs/fuse with fix.diff applied
(uio_offset<0 -> EINVAL; uio_offset > FUSE_MAXFILESIZE - uio_resid -> EFBIG).

--- run #1 (patched) ---
daemon pid=1110
/dev/fuse on /mnt/fuse (fuse, local)
=== daemon mounted; triggering write as maxx ===
[trigger] opening /mnt/fuse/target (O_WRONLY)
[trigger] lseek to 0x7ffffffffffffff0 (=9223372036854775792)
[trigger] file offset now 0x7ffffffffffffff0
[trigger] writing 16 bytes -> offset+resid wraps to 0x8000000000000000 (INT64_MIN)
[trigger] write returned -1 (errno=27 File too large)
write: File too large
trigger rc=0
=== guest survived; vm status: up; NO panic in boot.log ===

--- run #2 (patched) ---
[trigger] write returned -1 (errno=27 File too large)   ; guest up, no panic

--- run #3 (patched) ---
[trigger] write returned -1 (errno=27 File too large)   ; guest up, no panic

--- sanity: normal write still works ---
printf "hello" | dd of=/mnt/fuse/target bs=5 count=1  -> 5 bytes transferred, rc=0

RESULT: FIXED. The overflow is now rejected with EFBIG (errno 27) before
reaching fuse_reg_resize(). No panic. Legitimate writes unaffected.