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);