From f8651f2398b9b8a0e2c3fce1835283e744ef6475 Mon Sep 17 00:00:00 2001 From: Siqiao Chen Date: Wed, 1 Apr 2020 14:47:52 -0700 Subject: [PATCH] fixing [] for the Decision Summary: in a tricky time, we may use [] to generate a empty loopback address for a node. Later, when bgp convert this loopback address to a folly::IPAddress, it will crash. Add check here. Reviewed By: allwync Differential Revision: D20786262 fbshipit-source-id: afc1e46c897233ca415083fc90873b945a7789cc --- openr/decision/PrefixState.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openr/decision/PrefixState.cpp b/openr/decision/PrefixState.cpp index c32c16dfc1d..1ab5e4f6748 100644 --- a/openr/decision/PrefixState.cpp +++ b/openr/decision/PrefixState.cpp @@ -17,13 +17,15 @@ PrefixState::deleteLoopbackPrefix( auto addrSize = prefix.prefixAddress.addr.size(); if (addrSize == folly::IPAddressV4::byteCount() && folly::IPAddressV4::bitCount() == prefix.prefixLength) { - if (prefix.prefixAddress == nodeHostLoopbacksV4_[nodeName]) { + if (nodeHostLoopbacksV4_.find(nodeName) != nodeHostLoopbacksV4_.end() && + prefix.prefixAddress == nodeHostLoopbacksV4_.at(nodeName)) { nodeHostLoopbacksV4_.erase(nodeName); } } if (addrSize == folly::IPAddressV6::byteCount() && folly::IPAddressV6::bitCount() == prefix.prefixLength) { - if (nodeHostLoopbacksV6_[nodeName] == prefix.prefixAddress) { + if (nodeHostLoopbacksV6_.find(nodeName) != nodeHostLoopbacksV6_.end() && + nodeHostLoopbacksV6_.at(nodeName) == prefix.prefixAddress) { nodeHostLoopbacksV6_.erase(nodeName); } }