DF-2638 / verdict.json
{ "finding_id": "DF-2638", "status": "untested", "reproduced": 0, "impact": "none", "confidence": "likely", "verdict": "hammer2_inode_chain_sync (hammer2_inode.c:1718-1733) clears HAMMER2_INODE_RESIZED|MODIFIED before starting the backend xop; on xop failure the flag-restore code is commented out and the error swallowed ('XXX return error somehow?'), so pending metadata (size/times/mode, especially truncate RESIZED with its osize) is silently dropped from the dirty state. Data-integrity bug (silent metadata loss / potential stale meta.size vs data topology after remount); no memory-safety primitive demonstrated. Guest verification intentionally skipped per audit contract (Low).", "exploit_chain": "", "evidence": "README.md quotes the code with the commented-out restore", "kernel_refs": ["sys/vfs/hammer2/hammer2_inode.c:1694-1736", "sys/vfs/hammer2/hammer2_inode.c:1718-1719", "sys/vfs/hammer2/hammer2_inode.c:1725-1733"], "poc_changes": "", "attempts": 0, "guest_uname": "", "runtime_sec": 0, "guest_dirty": 0, "build_cmd": "", "run_cmd": "", "code_hash": "", "notes": "Related to DF-2633 (backend write failures surface as fsync errors on a full PFS).", "recommended_fix": "Uncomment the flag restore on error and propagate errno." } |