summaryrefslogtreecommitdiff
path: root/vswitchd
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2011-09-09 10:12:32 -0700
committerBen Pfaff <blp@nicira.com>2011-09-09 16:40:16 -0700
commit0d1fe4a36287a2e107f96e50a6ab3556da3726a3 (patch)
tree0eacb32bfde5c973f93ff8493ca7c21c8057f179 /vswitchd
parent1de11730e612b09e28892880c2845185497a3741 (diff)
downloadopenvswitch-0d1fe4a36287a2e107f96e50a6ab3556da3726a3.tar.gz
bridge: Avoid reading uninitialized data in bridge_pick_local_hw_addr().
Commit 3a48ace3 "bridge: Make bridge_pick_local_hw_addr() easier to reason" didn't initialize 'ea' before trying to compare against it. We need to check that an address has been found. Found by valgrind.
Diffstat (limited to 'vswitchd')
-rw-r--r--vswitchd/bridge.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index abea4f348..ba5fbc6fe 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -1080,7 +1080,7 @@ bridge_pick_local_hw_addr(struct bridge *br, uint8_t ea[ETH_ADDR_LEN],
!eth_addr_is_local(iface_ea) &&
!eth_addr_is_reserved(iface_ea) &&
!eth_addr_is_zero(iface_ea) &&
- eth_addr_compare_3way(iface_ea, ea) < 0)
+ (!found_addr || eth_addr_compare_3way(iface_ea, ea) < 0))
{
memcpy(ea, iface_ea, ETH_ADDR_LEN);
*hw_addr_iface = iface;