Fix potential buffer overrun.
BUG=27840771
Change-Id: I240f188b2e8f4b45d90138cfb3b14869cf506452
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);