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
Loading
Please register or sign in to comment