Fix potential buffer overrun.
am: 38025bc7fa

* commit '38025bc7fa31b231ae7b1575e0faf62a7f0953cf':
  Fix potential buffer overrun.

Change-Id: I60b170a299f5c1f35e233ef41db528981453f40b
diff --git a/libdex/OptInvocation.cpp b/libdex/OptInvocation.cpp
index bac2f24..6b87718 100644
--- a/libdex/OptInvocation.cpp
+++ b/libdex/OptInvocation.cpp
@@ -66,9 +66,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
@@ -76,8 +76,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
@@ -100,7 +100,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);