diff options
author | Aart Bik <ajcbik@google.com> | 2016-04-21 15:51:41 -0700 |
---|---|---|
committer | Jessica Wagantall <jwagantall@cyngn.com> | 2016-07-08 16:23:10 -0700 |
commit | a7fac776478686ed3e8124902a337cbf5f04652b (patch) | |
tree | 6c1ee54ea3080e3c0d8eb77e06669a206078024a | |
parent | 074c28dd656e9beb382e067f2d3f139577d82d15 (diff) | |
download | android_dalvik-stable/cm-13.0-ZNH2KB.tar.gz android_dalvik-stable/cm-13.0-ZNH2KB.tar.bz2 android_dalvik-stable/cm-13.0-ZNH2KB.zip |
Fix potential buffer overrun.stable/cm-13.0-ZNH2KB
BUG=27840771
Ticket: CYNGNOS-3020
Change-Id: I240f188b2e8f4b45d90138cfb3b14869cf506452
(cherry picked from commit 38025bc7fa31b231ae7b1575e0faf62a7f0953cf)
(cherry picked from commit c03c632f0456e6e0d3df1a0a62432f20b16f393e)
-rw-r--r-- | libdex/OptInvocation.cpp | 10 |
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); |