summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAart Bik <ajcbik@google.com>2016-05-02 21:41:36 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-05-02 21:41:36 +0000
commit0e17e1849633b07c019daf89c0d2ededc1333f3b (patch)
tree9b9a8f049f48a7aba7a867af4be042448ae76e73
parentc874dffb03527040a1886fb40bd679e116b6b30f (diff)
parent805b415be62243e6c30dcfbcf8c6fc39f32a469f (diff)
downloadandroid_dalvik-0e17e1849633b07c019daf89c0d2ededc1333f3b.tar.gz
android_dalvik-0e17e1849633b07c019daf89c0d2ededc1333f3b.tar.bz2
android_dalvik-0e17e1849633b07c019daf89c0d2ededc1333f3b.zip
Fix potential buffer overrun. am: 38025bc7fa
am: 805b415be6 * commit '805b415be62243e6c30dcfbcf8c6fc39f32a469f': Fix potential buffer overrun. Change-Id: I5c6959756d219ddcdb200318869d781bc3d99e93
-rw-r--r--libdex/OptInvocation.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/libdex/OptInvocation.cpp b/libdex/OptInvocation.cpp
index bac2f247d..6b877188f 100644
--- a/libdex/OptInvocation.cpp
+++ b/libdex/OptInvocation.cpp
@@ -66,9 +66,9 @@ char* dexOptGenerateCacheFileName(const char* fileName, const char* subFileName)
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 @@ char* dexOptGenerateCacheFileName(const char* fileName, const char* subFileName)
* 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 @@ char* dexOptGenerateCacheFileName(const char* fileName, const char* subFileName)
/* 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);