From frank@pinky.sax.de  Mon Jul  7 12:21:53 2008
Return-Path: <frank@pinky.sax.de>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id CC6BC106564A
	for <FreeBSD-gnats-submit@freebsd.org>; Mon,  7 Jul 2008 12:21:53 +0000 (UTC)
	(envelope-from frank@pinky.sax.de)
Received: from post.frank-behrens.de (unknown [IPv6:2a01:170:1023::1:2])
	by mx1.freebsd.org (Postfix) with ESMTP id 314DD8FC13
	for <FreeBSD-gnats-submit@freebsd.org>; Mon,  7 Jul 2008 12:21:52 +0000 (UTC)
	(envelope-from frank@pinky.sax.de)
Received: from moon.behrens ([IPv6:2a01:170:1023::1:2])
	by post.frank-behrens.de (8.14.2/8.14.2) with ESMTP-MSA id m67CLfB4040175
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO)
	for <FreeBSD-gnats-submit@freebsd.org>; Mon, 7 Jul 2008 14:21:41 +0200 (CEST)
	(envelope-from frank@moon.behrens)
Received: (from frank@localhost)
	by moon.behrens (8.14.2/8.14.2/Submit) id m67CLfhq040174;
	Mon, 7 Jul 2008 14:21:41 +0200 (CEST)
	(envelope-from frank)
Message-Id: <200807071221.m67CLfhq040174@moon.behrens>
Date: Mon, 7 Jul 2008 14:21:41 +0200 (CEST)
From: Frank Behrens <frank+pr20080707@harz.behrens.de>
To: FreeBSD-gnats-submit@freebsd.org
Subject: [patch] mdconfig(8) -l overflow for size field
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         125365
>Category:       bin
>Synopsis:       [patch] mdconfig(8) -l overflow for size field
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    jh
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jul 07 12:30:03 UTC 2008
>Closed-Date:    Thu Mar 25 16:53:50 UTC 2010
>Last-Modified:  Thu Mar 25 16:53:50 UTC 2010
>Originator:     Frank Behrens
>Release:        FreeBSD 7.0-STABLE-200805150513 i386
>Organization:
>Environment:

>Description:
	mdconfig(8) shows with -l -v the size of configured device. For devices with size > ULONG_MAX no number is shown.
>How-To-Repeat:
	Configute a bigger md device and show details:
# cd /tmp
# truncate -s 1G s.tmp
# truncate -s 10G b.tmp
# mdconfig -a -t vnode -f s.tmp -u 100
# mdconfig -a -t vnode -f b.tmp -u 101
# mdconfig -l -u 100
   1.0G  /tmp/s.tmp
# mdconfig -l -u 101
         /tmp/b.tmp
# mdconfig -d -u 100
# mdconfig -d -u 101
# rm s.tmp b.tmp

	
>Fix:

--- mdconfig_overflow.patch begins here ---
--- mdconfig.c.orig	2008-07-05 17:05:27.481413000 +0200
+++ mdconfig.c	2008-07-07 14:02:04.355862796 +0200
@@ -444,11 +444,11 @@
 md_prthumanval(char *length)
 {
 	char buf[6];
-	uint64_t bytes;
+	unsigned long long bytes;
 	char *endptr;
 
-	bytes = strtoul(length, &endptr, 10);
-	if (bytes == (unsigned)ULONG_MAX || *endptr != '\0')
+	bytes = strtoull(length, &endptr, 10);
+	if (bytes == (unsigned)ULLONG_MAX || *endptr != '\0')
 		return;
 	humanize_number(buf, sizeof(buf) - (bytes < 0 ? 0 : 1),
 	    bytes, "", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
--- mdconfig_overflow.patch ends here ---


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->matteo 
Responsible-Changed-By: matteo 
Responsible-Changed-When: Dom 31 Ago 2008 20:03:07 UTC 
Responsible-Changed-Why:  
Take it. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=125365 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/125365: commit references a PR
Date: Mon, 18 Jan 2010 14:07:55 +0000 (UTC)

 Author: jh
 Date: Mon Jan 18 14:07:41 2010
 New Revision: 202573
 URL: http://svn.freebsd.org/changeset/base/202573
 
 Log:
   Print sizes up to INT64_MAX in md_prthumanval().
   
   PR:		bin/125365
   Approved by:	trasz (mentor)
   MFC after:	2 weeks
 
 Modified:
   head/sbin/mdconfig/mdconfig.c
 
 Modified: head/sbin/mdconfig/mdconfig.c
 ==============================================================================
 --- head/sbin/mdconfig/mdconfig.c	Mon Jan 18 13:44:44 2010	(r202572)
 +++ head/sbin/mdconfig/mdconfig.c	Mon Jan 18 14:07:41 2010	(r202573)
 @@ -454,14 +454,15 @@ static void
  md_prthumanval(char *length)
  {
  	char buf[6];
 -	uint64_t bytes;
 +	uintmax_t bytes;
  	char *endptr;
  
 -	bytes = strtoul(length, &endptr, 10);
 -	if (bytes == (unsigned)ULONG_MAX || *endptr != '\0')
 +	errno = 0;
 +	bytes = strtoumax(length, &endptr, 10);
 +	if (errno != 0 || *endptr != '\0' || bytes > INT64_MAX)
  		return;
 -	humanize_number(buf, sizeof(buf) - (bytes < 0 ? 0 : 1),
 -	    bytes, "", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
 +	humanize_number(buf, sizeof(buf), (int64_t)bytes, "",
 +	    HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
  	(void)printf("%6s", buf);
  }
  
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->patched 
State-Changed-By: jh 
State-Changed-When: Mon Jan 18 15:49:05 UTC 2010 
State-Changed-Why:  
Patched in head (r202573). 


Responsible-Changed-From-To: matteo->jh 
Responsible-Changed-By: jh 
Responsible-Changed-When: Mon Jan 18 15:49:05 UTC 2010 
Responsible-Changed-Why:  
I committed a fix. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=125365 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/125365: commit references a PR
Date: Mon,  1 Feb 2010 16:02:30 +0000 (UTC)

 Author: jh
 Date: Mon Feb  1 16:02:14 2010
 New Revision: 203348
 URL: http://svn.freebsd.org/changeset/base/203348
 
 Log:
   MFC r202573:
   
   Print sizes up to INT64_MAX in md_prthumanval().
   
   PR:		bin/125365
   Approved by:	trasz (mentor)
 
 Modified:
   stable/8/sbin/mdconfig/mdconfig.c
 Directory Properties:
   stable/8/sbin/mdconfig/   (props changed)
 
 Modified: stable/8/sbin/mdconfig/mdconfig.c
 ==============================================================================
 --- stable/8/sbin/mdconfig/mdconfig.c	Mon Feb  1 15:22:22 2010	(r203347)
 +++ stable/8/sbin/mdconfig/mdconfig.c	Mon Feb  1 16:02:14 2010	(r203348)
 @@ -454,14 +454,15 @@ static void
  md_prthumanval(char *length)
  {
  	char buf[6];
 -	uint64_t bytes;
 +	uintmax_t bytes;
  	char *endptr;
  
 -	bytes = strtoul(length, &endptr, 10);
 -	if (bytes == (unsigned)ULONG_MAX || *endptr != '\0')
 +	errno = 0;
 +	bytes = strtoumax(length, &endptr, 10);
 +	if (errno != 0 || *endptr != '\0' || bytes > INT64_MAX)
  		return;
 -	humanize_number(buf, sizeof(buf) - (bytes < 0 ? 0 : 1),
 -	    bytes, "", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
 +	humanize_number(buf, sizeof(buf), (int64_t)bytes, "",
 +	    HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
  	(void)printf("%6s", buf);
  }
  
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: patched->closed 
State-Changed-By: jh 
State-Changed-When: Thu Mar 25 16:53:49 UTC 2010 
State-Changed-Why:  
Fixed in head and stable/8. Thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=125365 
>Unformatted:
