DragonFlyBSD Kernel Audit
DF-0822 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/vfs/hammer2/hammer2_freemap.c b/sys/vfs/hammer2/hammer2_freemap.c
--- a/sys/vfs/hammer2/hammer2_freemap.c
+++ b/sys/vfs/hammer2/hammer2_freemap.c
@@ -975,6 +975,11 @@
 	mtid = hammer2_trans_sub(hmp->spmp);
 
 	radix = (int)data_off & HAMMER2_OFF_MASK_RADIX;
+	if (radix == 0 || radix > HAMMER2_RADIX_MAX) {
+		kprintf("hammer2_freemap_adjust: %016jx: ignoring bad radix %d\n",
+				(intmax_t)data_off, radix);
+		return;
+	}
 	KKASSERT(radix != 0);
 	data_off &= ~HAMMER2_OFF_MASK_RADIX;
 	KKASSERT(radix <= HAMMER2_RADIX_MAX);