[automerger] Check for null-terminator in ResStringPool::string8At am: 5ec65ae909 am: c3d7250b99 am: e2417e6682 am: 0ab4540c41 am: a3f0976937 am: 166aa6e149 am: b7f7f7e14e

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

View File

@@ -807,7 +807,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);