DF-3042 / fix.diff
--- a/sys/vfs/hammer/hammer_ondisk.c 2026-06-29 12:51:19.000000000 +0000 +++ b/sys/vfs/hammer/hammer_ondisk.c 2026-10-26 03:28:07.221962165 +0000 @@ -207,6 +207,18 @@ error = EFTYPE; goto late_failure; } + /* + * Verify the volume header CRC when one is recorded. NOTE: + * newfs_hammer historically leaves vol_crc zero; treat zero as + * "not set" for compatibility and only enforce recorded CRCs. + */ + if (ondisk->vol_crc != 0 && + hammer_crc_test_volume(ondisk->vol_version, ondisk) == 0) { + hkprintf("volume %s has an invalid header CRC\n", + volume->vol_name); + error = EFTYPE; + goto late_failure; + } volume->vol_no = ondisk->vol_no; volume->vol_flags = ondisk->vol_flags; volume->maxbuf_off = HAMMER_ENCODE_RAW_BUFFER(volume->vol_no, |