From 95e21bc268e0f3bb4b51baea882393c639d945ef Mon Sep 17 00:00:00 2001 From: Joshua Duong Date: Fri, 11 Feb 2022 10:57:07 -0800 Subject: [windows] Fix stale pointer dereference. Bug: 217251994 Test: Manually reduced initial buffer size to execute resize code path. > set ADB_MDNS_OPENSCREEN=1& adb.exe track-devices Change-Id: Ice9416f7237364ebc6dd756b140990992d2189e5 --- platform/impl/network_interface_win.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/platform/impl/network_interface_win.cc b/platform/impl/network_interface_win.cc index f90d35d2..c3095457 100644 --- a/platform/impl/network_interface_win.cc +++ b/platform/impl/network_interface_win.cc @@ -16,7 +16,6 @@ std::vector GetAllInterfaces() { constexpr size_t INITIAL_BUFFER_SIZE = 15000; ULONG outbuflen = INITIAL_BUFFER_SIZE; std::vector charbuf(INITIAL_BUFFER_SIZE); - PIP_ADAPTER_ADDRESSES paddrs = reinterpret_cast(charbuf.data()); DWORD ret = NO_ERROR; constexpr int MAX_RETRIES = 5; @@ -25,7 +24,7 @@ std::vector GetAllInterfaces() { ret = GetAdaptersAddresses(AF_UNSPEC /* get both v4/v6 addrs */, GAA_FLAG_INCLUDE_PREFIX, NULL, - paddrs, + reinterpret_cast(charbuf.data()), &outbuflen); if (ret == ERROR_BUFFER_OVERFLOW) { charbuf.resize(outbuflen); @@ -40,7 +39,7 @@ std::vector GetAllInterfaces() { } std::vector infos; - auto pcurraddrs = paddrs; + auto pcurraddrs = reinterpret_cast(charbuf.data()); while (pcurraddrs != nullptr) { // TODO: return the interfaces OSP_DVLOG << "\tIfIndex=" << pcurraddrs->IfIndex; -- cgit v1.2.3