Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Nov 2013 17:59:14 +0000 (UTC)
From:      Juli Mallett <jmallett@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r258686 - head/sbin/fdisk
Message-ID:  <201311271759.rARHxEPE069195@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jmallett
Date: Wed Nov 27 17:59:13 2013
New Revision: 258686
URL: http://svnweb.freebsd.org/changeset/base/258686

Log:
  Fix fdisk(8) to create 2TB partitions on disks larger than 2TB, rather than
  only being able to create 1TB partitions:
  o) Use an unsigned 32-bit quantity to store the number of disk sectors.
  o) Detect overflow of said 32-bit quantity and clamp to 2^32.
  o) Rather than returning the disk sector count from get_params, return 0 on
     success, since its return value is only ever compared to -1 to detect
     failure.  This would cause returning 2^32 sectors to be interpreted as an
     error.
  
  Reviewed by:	bde ("good for a quick fix")

Modified:
  head/sbin/fdisk/fdisk.c

Modified: head/sbin/fdisk/fdisk.c
==============================================================================
--- head/sbin/fdisk/fdisk.c	Wed Nov 27 16:08:33 2013	(r258685)
+++ head/sbin/fdisk/fdisk.c	Wed Nov 27 17:59:13 2013	(r258686)
@@ -75,7 +75,8 @@ static int secsize = 0;		/* the sensed s
 
 static char *disk;
 
-static int cyls, sectors, heads, cylsecs, disksecs;
+static int cyls, sectors, heads, cylsecs;
+static u_int32_t disksecs;
 
 struct mboot {
 	unsigned char *bootinst;  /* boot code */
@@ -873,10 +874,13 @@ get_params()
 	o = g_mediasize(fd);
 	if (o < 0)
 		return (-1);
-	disksecs = o / u;
+	if (o / u <= NO_DISK_SECTORS)
+		disksecs = o / u;
+	else
+		disksecs = NO_DISK_SECTORS;
 	cyls = dos_cyls = o / (u * dos_heads * dos_sectors);
 
-	return (disksecs);
+	return (0);
 }
 
 static int



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311271759.rARHxEPE069195>