From uqs@spoerlein.net  Tue Oct 27 14:57:02 2009
Return-Path: <uqs@spoerlein.net>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 5E12A106568D
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 27 Oct 2009 14:57:02 +0000 (UTC)
	(envelope-from uqs@spoerlein.net)
Received: from acme.spoerlein.net (cl-43.dus-01.de.sixxs.net [IPv6:2a01:198:200:2a::2])
	by mx1.freebsd.org (Postfix) with ESMTP id E328D8FC1C
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 27 Oct 2009 14:57:01 +0000 (UTC)
Received: from acme.spoerlein.net (localhost.spoerlein.net [IPv6:::1])
	by acme.spoerlein.net (8.14.3/8.14.3) with ESMTP id n9REv03j085668
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO);
	Tue, 27 Oct 2009 15:57:00 +0100 (CET)
	(envelope-from uqs@acme.spoerlein.net)
Received: (from uqs@localhost)
	by acme.spoerlein.net (8.14.3/8.14.3/Submit) id n9REv0DQ085667;
	Tue, 27 Oct 2009 15:57:00 +0100 (CET)
	(envelope-from uqs)
Message-Id: <200910271457.n9REv0DQ085667@acme.spoerlein.net>
Date: Tue, 27 Oct 2009 15:57:00 +0100 (CET)
From: Ulrich Spoerlein <uqs@spoerlein.net>
To: FreeBSD-gnats-submit@freebsd.org
Subject: sysctl(8) raise WARNS to 3
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         140016
>Category:       bin
>Synopsis:       [patch] sysctl(8) raise WARNS to 3
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    uqs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Tue Oct 27 15:00:02 UTC 2009
>Closed-Date:    Mon Feb 15 15:20:36 UTC 2010
>Last-Modified:  Mon Feb 15 15:20:36 UTC 2010
>Originator:     Ulrich Spoerlein
>Release:        FreeBSD 7.2-STABLE i386
>Organization:
>Environment:
	
>Description:
Fixes taken from DragonflyBSD
>How-To-Repeat:
	
>Fix:
	

--- sysctl.patch begins here ---

diff -r 4ac60f34976d -r 860e96dcdced sbin/sysctl/Makefile
--- a/sbin/sysctl/Makefile	Mon Oct 19 17:02:14 2009 +0200
+++ b/sbin/sysctl/Makefile	Mon Oct 19 17:17:13 2009 +0200
@@ -2,7 +2,7 @@
 # $FreeBSD$
 
 PROG=	sysctl
-WARNS?=	0
+WARNS?=	3
 MAN=	sysctl.8
 
 .include <bsd.prog.mk>
diff -r 4ac60f34976d -r 860e96dcdced sbin/sysctl/sysctl.c
--- a/sbin/sysctl/sysctl.c	Mon Oct 19 17:02:14 2009 +0200
+++ b/sbin/sysctl/sysctl.c	Mon Oct 19 17:17:13 2009 +0200
@@ -274,7 +274,10 @@
 			case CTLTYPE_STRING:
 				break;
 			case CTLTYPE_QUAD:
-				sscanf(newval, "%qd", &quadval);
+				quadval = strtoq(newval, &endptr, 0);
+				if (endptr == newval || *endptr != '\0')
+					errx(1, "invalid quad integer"
+					    " '%s'", (char *)newval);
 				newval = &quadval;
 				newsize = sizeof(quadval);
 				break;
@@ -329,7 +332,7 @@
 	struct clockinfo *ci = (struct clockinfo*)p;
 
 	if (l2 != sizeof(*ci)) {
-		warnx("S_clockinfo %d != %d", l2, sizeof(*ci));
+		warnx("S_clockinfo %d != %zu", l2, sizeof(*ci));
 		return (1);
 	}
 	printf(hflag ? "{ hz = %'d, tick = %'d, profhz = %'d, stathz = %'d }" :
@@ -344,7 +347,7 @@
 	struct loadavg *tv = (struct loadavg*)p;
 
 	if (l2 != sizeof(*tv)) {
-		warnx("S_loadavg %d != %d", l2, sizeof(*tv));
+		warnx("S_loadavg %d != %zu", l2, sizeof(*tv));
 		return (1);
 	}
 	printf(hflag ? "{ %'.2f %'.2f %'.2f }" : "{ %.2f %.2f %.2f }",
@@ -362,7 +365,7 @@
 	char *p1, *p2;
 
 	if (l2 != sizeof(*tv)) {
-		warnx("S_timeval %d != %d", l2, sizeof(*tv));
+		warnx("S_timeval %d != %zu", l2, sizeof(*tv));
 		return (1);
 	}
 	printf(hflag ? "{ sec = %'jd, usec = %'ld } " :
@@ -384,7 +387,7 @@
 	int pageKilo = getpagesize() / 1024;
 
 	if (l2 != sizeof(*v)) {
-		warnx("S_vmtotal %d != %d", l2, sizeof(*v));
+		warnx("S_vmtotal %d != %zu", l2, sizeof(*v));
 		return (1);
 	}
 
@@ -416,7 +419,7 @@
 	dev_t *d = (dev_t *)p;
 
 	if (l2 != sizeof(*d)) {
-		warnx("T_dev_T %d != %d", l2, sizeof(*d));
+		warnx("T_dev_T %d != %zu", l2, sizeof(*d));
 		return (1);
 	}
 	if ((int)(*d) != -1) {
@@ -520,7 +523,7 @@
 	j = sizeof(buf);
 	i = sysctl(qoid, len + 2, buf, &j, 0, 0);
 	if (i)
-		err(1, "sysctl fmt %d %d %d", i, j, errno);
+		err(1, "sysctl fmt %d %zu %d", i, j, errno);
 
 	if (kind)
 		*kind = *(u_int *)buf;
@@ -562,7 +565,7 @@
 	j = sizeof(name);
 	i = sysctl(qoid, nlen + 2, name, &j, 0, 0);
 	if (i || !j)
-		err(1, "sysctl name %d %d %d", i, j, errno);
+		err(1, "sysctl name %d %zu %d", i, j, errno);
 
 	if (Nflag) {
 		printf("%s", name);
@@ -613,7 +616,7 @@
 	case 'A':
 		if (!nflag)
 			printf("%s%s", name, sep);
-		printf("%.*s", len, p);
+		printf("%.*s", (int)len, p);
 		free(oval);
 		return (0);
 
@@ -700,7 +703,7 @@
 		}
 		if (!nflag)
 			printf("%s%s", name, sep);
-		printf("Format:%s Length:%d Dump:0x", fmt, len);
+		printf("Format:%s Length:%zu Dump:0x", fmt, len);
 		while (len-- && (xflag || p < val + 16))
 			printf("%02x", *p++);
 		if (!xflag && len > 16)
@@ -736,7 +739,7 @@
 			if (errno == ENOENT)
 				return (0);
 			else
-				err(1, "sysctl(getnext) %d %d", j, l2);
+				err(1, "sysctl(getnext) %d %zu", j, l2);
 		}
 
 		l2 /= sizeof(int);
--- sysctl.patch ends here ---


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->uqs 
Responsible-Changed-By: uqs 
Responsible-Changed-When: Thu Feb 4 08:57:58 UTC 2010 
Responsible-Changed-Why:  
Take my own PR. 

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

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/140016: commit references a PR
Date: Mon, 15 Feb 2010 14:08:20 +0000 (UTC)

 Author: uqs
 Date: Mon Feb 15 14:08:06 2010
 New Revision: 203917
 URL: http://svn.freebsd.org/changeset/base/203917
 
 Log:
   sysctl(8): make WARNS=3 clean
   
   Fixes inspired by work done in DragonflyBSD.
   
   PR:		bin/140016
   Approved by:	ed (Co-mentor)
 
 Modified:
   head/sbin/sysctl/Makefile
   head/sbin/sysctl/sysctl.c
 
 Modified: head/sbin/sysctl/Makefile
 ==============================================================================
 --- head/sbin/sysctl/Makefile	Mon Feb 15 14:07:40 2010	(r203916)
 +++ head/sbin/sysctl/Makefile	Mon Feb 15 14:08:06 2010	(r203917)
 @@ -2,7 +2,7 @@
  # $FreeBSD$
  
  PROG=	sysctl
 -WARNS?=	0
 +WARNS?=	3
  MAN=	sysctl.8
  
  .include <bsd.prog.mk>
 
 Modified: head/sbin/sysctl/sysctl.c
 ==============================================================================
 --- head/sbin/sysctl/sysctl.c	Mon Feb 15 14:07:40 2010	(r203916)
 +++ head/sbin/sysctl/sysctl.c	Mon Feb 15 14:08:06 2010	(r203917)
 @@ -279,7 +279,10 @@ parse(char *string)
  			case CTLTYPE_STRING:
  				break;
  			case CTLTYPE_QUAD:
 -				sscanf(newval, "%qd", &quadval);
 +				quadval = strtoq(newval, &endptr, 0);
 +				if (endptr == newval || *endptr != '\0')
 +					errx(1, "invalid quad integer"
 +					    " '%s'", (char *)newval);
  				newval = &quadval;
  				newsize = sizeof(quadval);
  				break;
 @@ -334,7 +337,7 @@ S_clockinfo(int l2, void *p)
  	struct clockinfo *ci = (struct clockinfo*)p;
  
  	if (l2 != sizeof(*ci)) {
 -		warnx("S_clockinfo %d != %d", l2, sizeof(*ci));
 +		warnx("S_clockinfo %d != %zu", l2, sizeof(*ci));
  		return (1);
  	}
  	printf(hflag ? "{ hz = %'d, tick = %'d, profhz = %'d, stathz = %'d }" :
 @@ -349,7 +352,7 @@ S_loadavg(int l2, void *p)
  	struct loadavg *tv = (struct loadavg*)p;
  
  	if (l2 != sizeof(*tv)) {
 -		warnx("S_loadavg %d != %d", l2, sizeof(*tv));
 +		warnx("S_loadavg %d != %zu", l2, sizeof(*tv));
  		return (1);
  	}
  	printf(hflag ? "{ %'.2f %'.2f %'.2f }" : "{ %.2f %.2f %.2f }",
 @@ -367,7 +370,7 @@ S_timeval(int l2, void *p)
  	char *p1, *p2;
  
  	if (l2 != sizeof(*tv)) {
 -		warnx("S_timeval %d != %d", l2, sizeof(*tv));
 +		warnx("S_timeval %d != %zu", l2, sizeof(*tv));
  		return (1);
  	}
  	printf(hflag ? "{ sec = %'jd, usec = %'ld } " :
 @@ -389,7 +392,7 @@ S_vmtotal(int l2, void *p)
  	int pageKilo = getpagesize() / 1024;
  
  	if (l2 != sizeof(*v)) {
 -		warnx("S_vmtotal %d != %d", l2, sizeof(*v));
 +		warnx("S_vmtotal %d != %zu", l2, sizeof(*v));
  		return (1);
  	}
  
 @@ -421,7 +424,7 @@ T_dev_t(int l2, void *p)
  	dev_t *d = (dev_t *)p;
  
  	if (l2 != sizeof(*d)) {
 -		warnx("T_dev_T %d != %d", l2, sizeof(*d));
 +		warnx("T_dev_T %d != %zu", l2, sizeof(*d));
  		return (1);
  	}
  	printf("%s", devname(*d, S_IFCHR));
 @@ -518,7 +521,7 @@ oidfmt(int *oid, int len, char *fmt, u_i
  	j = sizeof(buf);
  	i = sysctl(qoid, len + 2, buf, &j, 0, 0);
  	if (i)
 -		err(1, "sysctl fmt %d %d %d", i, j, errno);
 +		err(1, "sysctl fmt %d %zu %d", i, j, errno);
  
  	if (kind)
  		*kind = *(u_int *)buf;
 @@ -551,6 +554,9 @@ show_var(int *oid, int nlen)
  	u_int kind;
  	int (*func)(int, void *);
  
 +	/* Silence GCC. */
 +	umv = mv = intlen = 0;
 +
  	bzero(buf, BUFSIZ);
  	bzero(name, BUFSIZ);
  	qoid[0] = 0;
 @@ -560,7 +566,7 @@ show_var(int *oid, int nlen)
  	j = sizeof(name);
  	i = sysctl(qoid, nlen + 2, name, &j, 0, 0);
  	if (i || !j)
 -		err(1, "sysctl name %d %d %d", i, j, errno);
 +		err(1, "sysctl name %d %zu %d", i, j, errno);
  
  	if (Nflag) {
  		printf("%s", name);
 @@ -611,7 +617,7 @@ show_var(int *oid, int nlen)
  	case 'A':
  		if (!nflag)
  			printf("%s%s", name, sep);
 -		printf("%.*s", len, p);
 +		printf("%.*s", (int)len, p);
  		free(oval);
  		return (0);
  
 @@ -698,7 +704,7 @@ show_var(int *oid, int nlen)
  		}
  		if (!nflag)
  			printf("%s%s", name, sep);
 -		printf("Format:%s Length:%d Dump:0x", fmt, len);
 +		printf("Format:%s Length:%zu Dump:0x", fmt, len);
  		while (len-- && (xflag || p < val + 16))
  			printf("%02x", *p++);
  		if (!xflag && len > 16)
 @@ -734,7 +740,7 @@ sysctl_all(int *oid, int len)
  			if (errno == ENOENT)
  				return (0);
  			else
 -				err(1, "sysctl(getnext) %d %d", j, l2);
 +				err(1, "sysctl(getnext) %d %zu", j, l2);
  		}
  
  		l2 /= sizeof(int);
 _______________________________________________
 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->closed 
State-Changed-By: uqs 
State-Changed-When: Mon Feb 15 15:20:34 UTC 2010 
State-Changed-Why:  
Committed to head in r203917. 

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