in-band: Fix memory leak in get_remote_mac().
authorBen Pfaff <blp@nicira.com>
Tue, 6 Apr 2010 19:40:11 +0000 (12:40 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 20 Apr 2010 18:01:44 +0000 (11:01 -0700)
If the call to netdev_open_default() failed then next_hop_dev was not
freed, but it should be.

ofproto/in-band.c

index 7774a51e358e00be3430e14495f9f612dab25cbf..94024bcecccfde902ae8db463c938cc397ccc36b 100644 (file)
@@ -279,10 +279,12 @@ get_remote_mac(struct in_band *ib)
                              "to controller "IP_FMT"): %s",
                              next_hop_dev, IP_ARGS(&ib->controller_ip),
                              strerror(retval));
+                free(next_hop_dev);
                 ib->next_remote_refresh = now + 1;
                 return NULL;
             }
         }
+        free(next_hop_dev);
 
         /* Look up the MAC address of the next-hop IP address. */
         retval = netdev_arp_lookup(ib->remote_netdev, r_in4.s_addr,
@@ -292,7 +294,6 @@ get_remote_mac(struct in_band *ib)
                         IP_ARGS(&r_in4.s_addr), strerror(retval));
         }
         have_mac = !eth_addr_is_zero(ib->remote_mac);
-        free(next_hop_dev);
         if (have_mac
             && !eth_addr_equals(ib->last_remote_mac, ib->remote_mac)) {
             VLOG_DBG("remote MAC address changed from "ETH_ADDR_FMT" to "