From fd960d48d63b5e2979147222e9d0f0f85e81f630 Mon Sep 17 00:00:00 2001 From: dillon Date: Sun, 13 Dec 1998 07:16:05 +0000 Subject: PR: bin/8624 Fixed intermediate calculation overflow when reporting users with > 2GB of disk space. --- usr.sbin/quot/quot.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'usr.sbin') diff --git a/usr.sbin/quot/quot.c b/usr.sbin/quot/quot.c index 7be0641..547fd8f 100644 --- a/usr.sbin/quot/quot.c +++ b/usr.sbin/quot/quot.c @@ -31,7 +31,7 @@ #ifndef lint static const char rcsid[] = - "$Id: quot.c,v 1.7 1997/10/10 06:31:07 charnier Exp $"; + "$Id: quot.c,v 1.8 1998/01/17 16:45:03 bde Exp $"; #endif /* not lint */ #include @@ -66,11 +66,14 @@ static int headerlen; * The new code always counts the number of 512 byte blocks * instead of the number of kilobytes and converts them to * kByte when done (on request). + * + * Due to the size of modern disks, we must cast intermediate + * values to 64 bits to prevent potential overflows. */ #ifdef COMPAT #define SIZE(n) (n) #else -#define SIZE(n) (((n) * 512 + blocksize - 1)/blocksize) +#define SIZE(n) ((int)(((quad_t)(n) * 512 + blocksize - 1)/blocksize)) #endif #define INOCNT(fs) ((fs)->fs_ipg) -- cgit v1.1