diff options
author | Hugo Benichi <hugobenichi@google.com> | 2016-06-21 09:48:07 +0900 |
---|---|---|
committer | Hugo Benichi <hugobenichi@google.com> | 2016-06-27 15:04:27 +0900 |
commit | 78caa25870391f676e1edbd448b5ff3e12a99a1e (patch) | |
tree | cb151c40090d3ef12efe6b5c5f7ed6e0d6911bf4 /tools/aapt2/diff/Diff.cpp | |
parent | 1b2ed4394c0e10c844faa4840067db4ee4a2367c (diff) |
Fix unsafe concurrent access in LegacyTypeTracker
This patch adds synchronization inside LegacyTypeTracker so that
getNetworkForType() can safely run concurrently with remove().
Without synchronization if remove() removes the last network for a
given type while getNetworkForType() runs for the same type, it is
possible that getNetworkForType tries to access the head of an empty
list, resulting in a runtime exception.
This issue was found by zoran.jovanovic@sonymobile.com who proposed a
fix in AOSP (Change-Id: Ia963662edb9d643790e8d9439e4dbdcac4c2187b).
This patch differs from the fix proposed by the bug reporter and tries
instead to do the minimum amount of locking to make getNetworkForType
safe.
Bug: 29030387
Change-Id: I915aac527fc8828b32bf35fee870add2dfb11d8d
Diffstat (limited to 'tools/aapt2/diff/Diff.cpp')
0 files changed, 0 insertions, 0 deletions