summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAart Bik <ajcbik@google.com>2016-05-02 22:21:48 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-05-02 22:21:48 +0000
commitc423f55f64f430d0e56a1809db49129f03760230 (patch)
tree08b030eed25deb93283d48ae3f40d9f6a1f05e45
parentf8ed7d3f0ea87b3fc1aa72859386c82d8d9bdbd4 (diff)
parentf984fa7d59f680eabb13920aa2b4dd2cbfc8be68 (diff)
downloaddalvik-c423f55f64f430d0e56a1809db49129f03760230.tar.gz
Fix potential buffer overrun. am: 38025bc7fa am: 805b415be6 am: 0e17e18496 am: 8e37aa191f am: e5c4e849e2 am: 46464a20e0 am: 3bbe8817e6 am: 63e01f731f am: a0af385aae
am: f984fa7d59 * commit 'f984fa7d59f680eabb13920aa2b4dd2cbfc8be68': Fix potential buffer overrun. Change-Id: I6c172e5a2e5b1f236b61351d92dc98357a22b892
-rw-r--r--libdex/OptInvocation.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/libdex/OptInvocation.cpp b/libdex/OptInvocation.cpp
index be7f70b50..bfad44b26 100644
--- a/libdex/OptInvocation.cpp
+++ b/libdex/OptInvocation.cpp
@@ -87,9 +87,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
@@ -97,8 +97,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
@@ -136,7 +136,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);