Fix use-after-free of interface name during network destruction.

bug:15560990

Change-Id: I899827c4f50847a3a60b6359f829bee5d6eb4f00
diff --git a/server/NetworkController.cpp b/server/NetworkController.cpp
index 4e21114..a32dd67 100644
--- a/server/NetworkController.cpp
+++ b/server/NetworkController.cpp
@@ -36,6 +36,10 @@
 #include "RouteController.h"
 
 #define LOG_TAG "NetworkController"
+
+#include <sys/socket.h>
+#include <linux/if.h>
+
 #include "cutils/log.h"
 #include "resolv_netid.h"
 
@@ -273,9 +277,11 @@
 
     InterfaceRange range = mNetIdToInterfaces.equal_range(netId);
     for (InterfaceIteratorConst iter = range.first; iter != range.second; ) {
-        InterfaceIteratorConst toErase = iter;
+        char interface[IFNAMSIZ];
+        strncpy(interface, iter->second.c_str(), sizeof(interface));
+        interface[sizeof(interface) - 1] = 0;
         ++iter;
-        if (!removeInterfaceFromNetwork(netId, toErase->second.c_str())) {
+        if (!removeInterfaceFromNetwork(netId, interface)) {
             status = false;
         }
     }