diff options
| author | 2018-06-06 23:33:08 +0000 | |
|---|---|---|
| committer | 2018-06-06 23:33:08 +0000 | |
| commit | a31be05c5b5662bc710292ffd6af219dd7185fb5 (patch) | |
| tree | 57a152e923fd393172442f72fa0c9bbb64471f9d | |
| parent | 7ae28c3d56386580a3f227681b044138c3aaaa8d (diff) | |
| parent | aeb2fc64d92594b43e0aa0abf12699235bb24ed9 (diff) | |
Merge changes from topic "dynamic-ref-se-mnc-dev" into cw-e-dev
* changes:
[automerger] Fix DynamicRefTable::load security bug am: 8cf0f988b0 am: d65dbf91ce
[automerger] Fix DynamicRefTable::load security bug am: 8cf0f988b0
Fix DynamicRefTable::load security bug
| -rw-r--r-- | libs/androidfw/ResourceTypes.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libs/androidfw/ResourceTypes.cpp b/libs/androidfw/ResourceTypes.cpp index 428180b6a828..3a215d4adde2 100644 --- a/libs/androidfw/ResourceTypes.cpp +++ b/libs/androidfw/ResourceTypes.cpp @@ -6220,8 +6220,16 @@ status_t ResTable::parsePackage(const ResTable_package* const pkg, } } else if (ctype == RES_TABLE_LIBRARY_TYPE) { + if (group->dynamicRefTable.entries().size() == 0) { - status_t err = group->dynamicRefTable.load((const ResTable_lib_header*) chunk); + const ResTable_lib_header* lib = (const ResTable_lib_header*) chunk; + status_t err = validate_chunk(&lib->header, sizeof(*lib), + endPos, "ResTable_lib_header"); + if (err != NO_ERROR) { + return (mError=err); + } + + err = group->dynamicRefTable.load(lib); if (err != NO_ERROR) { return (mError=err); } |