summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ryan Mitchell <rtmitchell@google.com> 2018-06-06 23:33:08 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-06-06 23:33:08 +0000
commita31be05c5b5662bc710292ffd6af219dd7185fb5 (patch)
tree57a152e923fd393172442f72fa0c9bbb64471f9d
parent7ae28c3d56386580a3f227681b044138c3aaaa8d (diff)
parentaeb2fc64d92594b43e0aa0abf12699235bb24ed9 (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.cpp10
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);
}