Fix potential buffer overrun. am: 38025bc7fa am: 805b415be6 am: 0e17e18496 am: 8e37aa191f am: e5c4e849e2 am: 46464a20e0 am: 3bbe8817e6 am: 63e01f731f
am: a0af385aae

* commit 'a0af385aae066ee3e3b5414b4dbeb5acb03b3e9e':
  Fix potential buffer overrun.

Change-Id: Ic52a3476c569227eb2146b4ac653fb8a3f58e068
diff --git a/libdex/OptInvocation.cpp b/libdex/OptInvocation.cpp
index be7f70b..bfad44b 100644
--- a/libdex/OptInvocation.cpp
+++ b/libdex/OptInvocation.cpp
@@ -87,9 +87,9 @@
             ALOGE("Can't get CWD while opening jar file");
             return NULL;
         }
-        strncat(absoluteFile, "/", kBufLen);
+        strncat(absoluteFile, "/", kBufLen - strlen(absoluteFile));
     }
-    strncat(absoluteFile, fileName, kBufLen);
+    strncat(absoluteFile, fileName, kBufLen - strlen(absoluteFile));
 
     /*
      * Append the name of the Jar file entry, if any.  This is not currently
@@ -97,8 +97,8 @@
      * in a Jar.
      */
     if (subFileName != NULL) {
-        strncat(absoluteFile, "/", kBufLen);
-        strncat(absoluteFile, subFileName, kBufLen);
+        strncat(absoluteFile, "/", kBufLen - strlen(absoluteFile));
+        strncat(absoluteFile, subFileName, kBufLen - strlen(absoluteFile));
     }
 
     /* Turn the path into a flat filename by replacing
@@ -136,7 +136,7 @@
 
     /* Tack on the file name for the actual cache file path.
      */
-    strncat(nameBuf, absoluteFile, kBufLen);
+    strncat(nameBuf, absoluteFile, kBufLen - strlen(nameBuf));
 
     ALOGV("Cache file for '%s' '%s' is '%s'", fileName, subFileName, nameBuf);
     return strdup(nameBuf);