diff options
author | imp <imp@FreeBSD.org> | 2001-03-05 03:39:57 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2001-03-05 03:39:57 +0000 |
commit | a0cea41d1535e2f02eaa1c47ac389f8d3d91d145 (patch) | |
tree | ac52a9bcd9951a5a89cb90d8426208cdcc0ca5e8 | |
parent | fd7e18a5ae05ee29641e0419d2e6d9db8b01d121 (diff) | |
download | FreeBSD-src-a0cea41d1535e2f02eaa1c47ac389f8d3d91d145.zip FreeBSD-src-a0cea41d1535e2f02eaa1c47ac389f8d3d91d145.tar.gz |
First attempt to not overflow in disk space calculations. Use off_t
for the size variable used to calculate the size of the partition.
Also use ULL suffix for constants to ensure that we use 64 bit math.
-rw-r--r-- | sbin/bsdlabel/bsdlabel.c | 10 | ||||
-rw-r--r-- | sbin/disklabel/disklabel.c | 10 |
2 files changed, 10 insertions, 10 deletions
diff --git a/sbin/bsdlabel/bsdlabel.c b/sbin/bsdlabel/bsdlabel.c index cec9cc0..26c2ee3 100644 --- a/sbin/bsdlabel/bsdlabel.c +++ b/sbin/bsdlabel/bsdlabel.c @@ -1331,7 +1331,7 @@ checklabel(lp) register struct partition *pp; int i, errors = 0; char part; - unsigned long total_size,total_percent,current_offset; + unsigned long total_size, total_percent, current_offset; int seen_default_offset; int hog_part; int j; @@ -1394,7 +1394,7 @@ checklabel(lp) } } else { char *type; - unsigned long size; + off_t size; size = pp->p_size; switch (part_size_type[i]) { @@ -1403,15 +1403,15 @@ checklabel(lp) break; case 'k': case 'K': - size *= 1024UL; + size *= 1024ULL; break; case 'm': case 'M': - size *= ((unsigned long) 1024*1024); + size *= 1024ULL * 1024ULL; break; case 'g': case 'G': - size *= ((unsigned long) 1024*1024*1024); + size *= 1024ULL * 1024ULL * 1024ULL; break; case '\0': break; diff --git a/sbin/disklabel/disklabel.c b/sbin/disklabel/disklabel.c index cec9cc0..26c2ee3 100644 --- a/sbin/disklabel/disklabel.c +++ b/sbin/disklabel/disklabel.c @@ -1331,7 +1331,7 @@ checklabel(lp) register struct partition *pp; int i, errors = 0; char part; - unsigned long total_size,total_percent,current_offset; + unsigned long total_size, total_percent, current_offset; int seen_default_offset; int hog_part; int j; @@ -1394,7 +1394,7 @@ checklabel(lp) } } else { char *type; - unsigned long size; + off_t size; size = pp->p_size; switch (part_size_type[i]) { @@ -1403,15 +1403,15 @@ checklabel(lp) break; case 'k': case 'K': - size *= 1024UL; + size *= 1024ULL; break; case 'm': case 'M': - size *= ((unsigned long) 1024*1024); + size *= 1024ULL * 1024ULL; break; case 'g': case 'G': - size *= ((unsigned long) 1024*1024*1024); + size *= 1024ULL * 1024ULL * 1024ULL; break; case '\0': break; |