Date: Tue, 27 Oct 2009 15:57:00 +0100 (CET) From: Ulrich Spörlein <uqs@spoerlein.net> To: FreeBSD-gnats-submit@FreeBSD.org Subject: bin/140016: sysctl(8) raise WARNS to 3 Message-ID: <200910271457.n9REv0DQ085667@acme.spoerlein.net> Resent-Message-ID: <200910271500.n9RF03a6035345@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 140016
>Category: bin
>Synopsis: sysctl(8) raise WARNS to 3
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Tue Oct 27 15:00:02 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator: Ulrich Spörlein
>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:
>Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200910271457.n9REv0DQ085667>
