From 9ad77f813d253002b177ffa0d670ff9d0af7d093 Mon Sep 17 00:00:00 2001 From: gibbs Date: Mon, 2 Jun 1997 19:25:48 +0000 Subject: Don't overflow when calculating the size in MB of a partition. No more 241MB 4+ gig partitions for me! --- sbin/i386/fdisk/fdisk.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'sbin/i386') diff --git a/sbin/i386/fdisk/fdisk.c b/sbin/i386/fdisk/fdisk.c index 6f759f8..8e3e267 100644 --- a/sbin/i386/fdisk/fdisk.c +++ b/sbin/i386/fdisk/fdisk.c @@ -429,17 +429,26 @@ static struct dos_partition mtpart = { 0 }; static void print_part(int i) { -struct dos_partition *partp = ((struct dos_partition *) &mboot.parts) + i; + struct dos_partition *partp; + u_int64_t part_mb; + partp = ((struct dos_partition *) &mboot.parts) + i; if (!bcmp(partp, &mtpart, sizeof (struct dos_partition))) { printf("\n"); return; } + /* + * Be careful not to overflow. + */ + part_mb = partp->dp_size; + part_mb *= secsize; + part_mb /= (1024 * 1024); printf("sysid %d,(%s)\n", partp->dp_typ, get_type(partp->dp_typ)); - printf(" start %ld, size %ld (%ld Meg), flag %x\n", + printf(" start %ld, size %ld (%qd Meg), flag %x\n", partp->dp_start, - partp->dp_size, partp->dp_size * secsize / (1024 * 1024), + partp->dp_size, + part_mb, partp->dp_flag); printf("\tbeg: cyl %d/ sector %d/ head %d;\n\tend: cyl %d/ sector %d/ head %d\n" ,DPCYL(partp->dp_scyl, partp->dp_ssect) -- cgit v1.1