lib/socket: Fix improper use of default interface speed
authorAnoop C S <anoopcs@redhat.com>
Thu, 11 Feb 2016 09:25:55 +0000 (14:55 +0530)
committerMichael Adam <obnox@samba.org>
Sat, 13 Feb 2016 15:22:22 +0000 (16:22 +0100)
_get_interfaces() function from interfaces.c uses if_speed
variable to store interface speed and is initialized with a
default value at start. But if_speed populated via one
iteration for a specific IP address will be treated as the
default value for next iteration which is wrong. Therefore
change is to move the initialization cum declaration of
if_speed inside iteration of IP addresses loop.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=11734

Signed-off-by: Anoop C S <anoopcs@redhat.com>
Reviewed-by: Michael Adam <obnox@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Autobuild-User(master): Michael Adam <obnox@samba.org>
Autobuild-Date(master): Sat Feb 13 16:22:22 CET 2016 on sn-devel-144

lib/socket/interfaces.c

index 847fa6255ba74e61a1870c2f5be9a5ed92833919..2cabf46316b913133a8339bfbaea34dd5e4a0544 100644 (file)
@@ -189,7 +189,6 @@ static int _get_interfaces(TALLOC_CTX *mem_ctx, struct iface_struct **pifaces)
        int count;
        int total = 0;
        size_t copy_size;
-       uint64_t if_speed = 1000 * 1000 * 1000; /* 1GBit */
 
        if (getifaddrs(&iflist) < 0) {
                return -1;
@@ -214,6 +213,7 @@ static int _get_interfaces(TALLOC_CTX *mem_ctx, struct iface_struct **pifaces)
 
        /* Loop through interfaces, looking for given IP address */
        for (ifptr = iflist; ifptr != NULL; ifptr = ifptr->ifa_next) {
+               uint64_t if_speed = 1000 * 1000 * 1000; /* 1Gbps */
 
                if (!ifptr->ifa_addr || !ifptr->ifa_netmask) {
                        continue;