bin/54672: [PATCH] fix gcc 3.3 compiler warning for ifconfig(8)

Lukas Ertl l.ertl at univie.ac.at
Sun Jul 20 13:10:03 PDT 2003


>Number:         54672
>Category:       bin
>Synopsis:       [PATCH] fix gcc 3.3 compiler warning for ifconfig(8)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Jul 20 13:10:00 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Lukas Ertl
>Release:        FreeBSD 5.1-CURRENT i386
>Organization:
Vienna University Computer Center
>Environment:
System: FreeBSD korben 5.1-CURRENT FreeBSD 5.1-CURRENT #4: Mon Jul 14 22:28:43 CEST 2003 le at korben:/usr/obj/usr/src/sys/KORBEN i386


	
>Description:

When compiling ifconfig(8), gcc-3.3 emits the following warning:

cc -O -pipe -march=athlon -DUSE_IF_MEDIA -DINET6 -DUSE_VLANS -DUSE_IEEE80211 -DUSE_MAC -DNS -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings  -Wnested-externs -I..   -DRESCUE  -c /usr/src/sbin/ifconfig/ifconfig.c
/usr/src/sbin/ifconfig/ifconfig.c: In function `setatrange':
/usr/src/sbin/ifconfig/ifconfig.c:1692: warning: comparison is always false due to limited range of data type
/usr/src/sbin/ifconfig/ifconfig.c:1692: warning: comparison is always false due to limited range of data type

The bogus comparison is:

    if (sscanf(range, "%hu-%hu", &first, &last) != 2
        || first == 0 || first > 0xffff
        || last == 0 || last > 0xffff || first > last)

first and last are both declared as u_short, which can't hold values larger
then 0xffff, so the comparison isn't needed.

>How-To-Repeat:
	
>Fix:


--- ifconfig.diff begins here ---
Index: sbin/ifconfig/ifconfig.c
===================================================================
RCS file: /usr/local/bsdcvs/src/sbin/ifconfig/ifconfig.c,v
retrieving revision 1.90
diff -u -u -r1.90 ifconfig.c
--- sbin/ifconfig/ifconfig.c	28 Apr 2003 16:37:38 -0000	1.90
+++ sbin/ifconfig/ifconfig.c	20 Jul 2003 20:01:02 -0000
@@ -1688,8 +1688,7 @@
 	u_short	first = 123, last = 123;
 
 	if (sscanf(range, "%hu-%hu", &first, &last) != 2
-	    || first == 0 || first > 0xffff
-	    || last == 0 || last > 0xffff || first > last)
+	    || first == 0 || last == 0 || first > last)
 		errx(1, "%s: illegal net range: %u-%u", range, first, last);
 	at_nr.nr_firstnet = htons(first);
 	at_nr.nr_lastnet = htons(last);
--- ifconfig.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list