Fix use-after-free in NetworkController::removeInterfaceAddress()
Test: system/netd/tests/runtests.sh
Bug: 111381576
Change-Id: I0ebb9ac758b55f10536fef75f0eb7b69e2feccbc
diff --git a/server/NetworkController.cpp b/server/NetworkController.cpp
index ed5156f..2242d42 100644
--- a/server/NetworkController.cpp
+++ b/server/NetworkController.cpp
@@ -629,7 +629,9 @@
std::unordered_set<unsigned>& ifindices = ifindicesIter->second;
if (ifindices.erase(ifindex) > 0) {
if (ifindices.size() == 0) {
- mAddressToIfindices.erase(ifindicesIter);
+ mAddressToIfindices.erase(ifindicesIter); // Invalidates ifindices
+ // The address is no longer configured on any interface.
+ return true;
}
} else {
ALOGE("No record of address %s on interface %u", address, ifindex);