Check total string length of supplied DNS servers

Make sure the number of DNS servers doesn't grow past what we were
planning on handling in our string buffer.

Change-Id: Ic2d60b0a4363c806d4c3a7dfafa62930c4f5ca1f
diff --git a/TetherController.cpp b/TetherController.cpp
index 3485a62..08f6bb1 100644
--- a/TetherController.cpp
+++ b/TetherController.cpp
@@ -168,11 +168,14 @@
     return (mDaemonPid == 0 ? false : true);
 }
 
+#define MAX_CMD_SIZE 1024
+
 int TetherController::setDnsForwarders(char **servers, int numServers) {
     int i;
-    char daemonCmd[1024];
+    char daemonCmd[MAX_CMD_SIZE];
 
     strcpy(daemonCmd, "update_dns");
+    int cmdLen = strlen(daemonCmd);
 
     mDnsForwarders->clear();
     for (i = 0; i < numServers; i++) {
@@ -185,6 +188,13 @@
             mDnsForwarders->clear();
             return -1;
         }
+
+        cmdLen += strlen(servers[i]);
+        if (cmdLen + 2 >= MAX_CMD_SIZE) {
+            LOGD("Too many DNS servers listed");
+            break;
+        }
+
         strcat(daemonCmd, ":");
         strcat(daemonCmd, servers[i]);
         mDnsForwarders->push_back(a);