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

Commit 8a243118 authored by Josh Gao's avatar Josh Gao
Browse files

unwindstack: fix dangling pointer in LocalUpdatableMaps.

Previously, when reparsing /proc/self/maps, we would remove duplicate
MapInfo entries, but leave the following entry's prev_map pointing
toward the soon-to-be-deleted MapInfo, leading to explosions.

Test: libunwindstack_test
Test: booted with libfdtrack.so preloaded
Change-Id: Ibfb7a8712540fe3aaadc10e9c31938f6ecddf17b
parent bace5995
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -139,6 +139,9 @@ bool LocalUpdatableMaps::Reparse() {
      if (start == info->start && end == info->end && flags == info->flags && *name == info->name) {
        // No need to check
        search_map_idx = old_map_idx + 1;
        if (new_map_idx + 1 < maps_.size()) {
          maps_[new_map_idx + 1]->prev_map = info.get();
        }
        maps_[new_map_idx] = nullptr;
        total_entries--;
        break;