DF-2619 / manifest.json
{ "finding_id": "DF-2619", "verdict": "reproduced", "impact": "leak", "reproduce": { "build": "guest: newfs_hammer2 base + one 255-char-named file (see build.sh); host: python3 forge_2619.py base2619.img craft2619.img; guest: cc getdents_dump.c statprobe.c", "run": "guest root: vnconfig -c vn0 craft2619.img; mount -o ro -t hammer2 /dev/vn0@testvol /mnt/h2x; ./getdents_dump /mnt/h2x; ./statprobe <255-char name>", "expected": "getdents returns the dirent name ending with 127 bytes of kernel memory from past the 64KB DIO buffer (mapped-adjacent case), or a fatal trap 12 in memcpy+0x19 / hammer2_vop_readdir+0x5c8 / hammer2_chain_dirent_test+0x89 (unmapped case); stat exercises the dirent_test bcmp OOB; base-image control is clean" }, "kernel_refs": [ "sys/vfs/hammer2/hammer2_chain.c:5781-5790", "sys/vfs/hammer2/hammer2_vnops.c:723-737", "sys/vfs/hammer2/hammer2_chain.c:1100", "sys/vfs/hammer2/hammer2_io.c:120-127", "sys/vfs/hammer2/hammer2_io.c:555-563", "sys/vfs/hammer2/hammer2_xops.c:275-290" ], "artifacts": [ "forge_2619.py", "h2common.py", "getdents_dump.c", "statprobe.c", "run_2619.sh", "run_2619_instr.sh", "run_stock.log", "console_excerpts.txt", "fix.diff", "fix_run.log", "instr_build.log", "instr_build2.log", "instr_install.log", "fix_build.log", "fix_install.log", "env.txt", "README.md", "VERDICT.md", "build.sh", "run.sh", "manifest.json", "verdict.json" ] } |