]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
bridge: Make filter_index match in signedness
authorAndreas Henriksson <andreas@fatal.se>
Wed, 4 Jun 2014 17:40:37 +0000 (19:40 +0200)
committerStephen Hemminger <stephen@networkplumber.org>
Mon, 9 Jun 2014 19:40:45 +0000 (12:40 -0700)
Michael Tautschnig wrote:

During a rebuild [...]. Please note that we use our research
compiler tool-chain (using tools from the cbmc package), which permits extended
reporting on type inconsistencies at link time.

[...]
gcc   bridge.o fdb.o monitor.o link.o mdb.o vlan.o ../lib/libnetlink.a ../lib/libutil.a  ../lib/libnetlink.a ../lib/libutil.a -o bridge
file link.c line 18: error: conflicting types for variable "filter_index"
old definition in module fdb file fdb.c line 29
signed int
new definition in module link file link.c line 18
unsigned int
<builtin>: recipe for target 'bridge' failed
make[3]: *** [bridge] Error 64
make[3]: Leaving directory '/srv/jenkins-slave/workspace/sid-goto-cc-iproute2/iproute2-3.14.0/bridge'
Makefile:45: recipe for target 'all' failed

While practical constraints may limit the value of filter_index to remain within
the bounds of a positive signed int, there is certainly no such guarantee here.
Also, a plain majority vote suggests that this really just a wrong declaration
in link.c as several declarations of filter_index as signed int exist.

[...]

My followup on this was:

I think the majority is wrong.

filter_index is assigned exclusively from if_nametoindex or ll_name_to_index
which both return unsigned int.

Changing it to unsigned everywhere seems better.

This has been minimally tested by using the bridge tool
to add vids and showing available vids on different devices.

Reported-by: Michael Tautschnig <mt@debian.org>
Signed-off-by: Andreas Henriksson <andreas@fatal.se>
bridge/fdb.c
bridge/link.c
bridge/mdb.c
bridge/vlan.c

index 336cf9d7bc25efad0488c9e20338292bbdc3b27e..cca99ef3cc066dc994d43dde3b2eb650e863de59 100644 (file)
@@ -27,7 +27,7 @@
 #include "rt_names.h"
 #include "utils.h"
 
-int filter_index;
+static unsigned int filter_index;
 
 static void usage(void)
 {
index e3fd6e6384e0d3e8055af785d22669c82488519e..90d9e7f549c555388e84192c46fc37fceba19d24 100644 (file)
@@ -15,7 +15,7 @@
 #include "utils.h"
 #include "br_common.h"
 
-unsigned int filter_index;
+static unsigned int filter_index;
 
 static const char *port_states[] = {
        [BR_STATE_DISABLED] = "disabled",
index 81d479b9a34071030a1df7651b320eb1ef20682c..6c1c938a6ae474eb3f4667849072674ca978b753 100644 (file)
@@ -24,7 +24,7 @@
        ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct br_port_msg))))
 #endif
 
-int filter_index;
+static unsigned int filter_index;
 
 static void usage(void)
 {
index 83c40880f0425ac5407fa444bbcbbbb6b1849f56..3bd7b0db5090d37b5f144ec3cfb732e820234f7e 100644 (file)
@@ -13,7 +13,7 @@
 #include "br_common.h"
 #include "utils.h"
 
-int filter_index;
+static unsigned int filter_index;
 
 static void usage(void)
 {