Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6759955c authored by Ryan Mitchell's avatar Ryan Mitchell
Browse files

Fixed resource bag retrieval infinite recursion.

An app was crashing because in an attempt to retrieve layout
attribute/style data, the app infinitely recursed because its parent was
set to itself. This change checks if the resource bag parent and child
have the same ids, and if so, attempts to find the resource in this bag
alone rather than attempting to also look in parent bags.

Bug: 74493983
Test: Manual testing of Fitbit app
Change-Id: Iea37533a0676bd51b72c9bb235adec9bd04f2ccc
(cherry picked from commit ac04095b)
parent a926126a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -596,7 +596,7 @@ const ResolvedBag* AssetManager2::GetBag(uint32_t resid) {
  const ResTable_map* const map_entry_end = map_entry + dtohl(map->count);

  uint32_t parent_resid = dtohl(map->parent.ident);
  if (parent_resid == 0) {
  if (parent_resid == 0 || parent_resid == resid) {
    // There is no parent, meaning there is nothing to inherit and we can do a simple
    // copy of the entries in the map.
    const size_t entry_count = map_entry_end - map_entry;