[automerger] Check for null-terminator in ResStringPool::string8At am: 5ec65ae909 am: c3d7250b99

Change-Id: I43a4eb54f67bd3dbcffd0432c3988b0377463fff
This commit is contained in:
Android Build Merger (Role)
2018-01-17 22:20:14 +00:00

View File

@@ -805,7 +805,13 @@ const char* ResStringPool::string8At(size_t idx, size_t* outLen) const
*outLen = decodeLength(&str);
size_t encLen = decodeLength(&str);
if ((uint32_t)(str+encLen-strings) < mStringPoolSize) {
return (const char*)str;
// Reject malformed (non null-terminated) strings
if (str[encLen] != 0x00) {
ALOGW("Bad string block: string #%d is not null-terminated",
(int)idx);
return NULL;
}
return (const char*)str;
} else {
ALOGW("Bad string block: string #%d extends to %d, past end at %d\n",
(int)idx, (int)(str+encLen-strings), (int)mStringPoolSize);