DragonFlyBSD Kernel Audit
DF-0199 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/kern/subr_fattime.c b/sys/kern/subr_fattime.c
--- a/sys/kern/subr_fattime.c
+++ b/sys/kern/subr_fattime.c
@@ -229,8 +229,11 @@
 	tsp->tv_sec += dh / 100;
 	tsp->tv_nsec = (dh % 100) * 10000000;
 
-	/* Day of month */
-	day = (dd & 0x1f) - 1;
+	/* Day of month (FAT stores 1..31; 0 is invalid) */
+	day = (dd & 0x1f);
+	if (day == 0)
+		day = 1;
+	day -= 1;
 
 	/* Full leap-year cycles */
 	day += LYC * ((dd >> 11) & 0x1f);