diff options
| author | Bernie Innocenti <codewiz@google.com> | 2018-07-19 18:06:52 +0900 |
|---|---|---|
| committer | Bernie Innocenti <codewiz@google.com> | 2018-07-20 00:13:48 +0900 |
| commit | dd5a4f0ef32dbb30575a68b6869a68fc30c57dc4 (patch) | |
| tree | cf1092abea692c1089fdb3eb88a970664fbf3a96 /server/NetworkController.cpp | |
| parent | 286d426d5459428b9db616c734b47813181c8c50 (diff) | |
Fix use-after-free in NetworkController::removeInterfaceAddress()
Test: system/netd/tests/runtests.sh
Bug: 111381576
Change-Id: I0ebb9ac758b55f10536fef75f0eb7b69e2feccbc
Diffstat (limited to 'server/NetworkController.cpp')
| -rw-r--r-- | server/NetworkController.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/server/NetworkController.cpp b/server/NetworkController.cpp index ed5156f6..2242d42e 100644 --- a/server/NetworkController.cpp +++ b/server/NetworkController.cpp @@ -629,7 +629,9 @@ bool NetworkController::removeInterfaceAddress(unsigned ifindex, const char* add 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); |
