diff options
| author | 2017-03-01 10:40:36 +0900 | |
|---|---|---|
| committer | 2017-03-07 07:12:51 +0000 | |
| commit | a47b0c97a2aa21cff8c9f87eb9ccef68ed54d67c (patch) | |
| tree | 4a3e4cbf70b3af07c8ee873555567717865a8261 | |
| parent | 9324d6513bdc333cc2a05a8f33ba120a322fd566 (diff) | |
Fix NPE while performing NetworkStatsService.removeUidsLocked()
Symptom:
NPE occurred while performing NetworkStatsService.removeUidsLocked().
Root cause:
NetworkStatsService refers to mUidRecorder at
NetworkStatsService.removeUidsLocked() when mUserReceiver received
Intent.ACTION_USER_REMOVED.
However NetworkStatsService sets mUidRecorder to null without
unregistering mUserReceiver when mShutdownReceiver received
Intent.ACTION_SHUTDOWN.
Therefore NPE occurred when mUserReceiver received
Intent.ACTION_USER_REMOVED after mShutdownReceiver received
Intent.ACTION_SHUTDOWN.
Solution:
Unregister mUserReceiver before setting mUidRecorder to null when
mShutdownReceiver received Intent.ACTION_SHUTDOWN.
Bug: 36015339
Change-Id: I9279e4c6ae07d94e7ec519c40b2d973c84d8fef1
| -rw-r--r-- | services/core/java/com/android/server/net/NetworkStatsService.java | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java index 4658c0463f0e..060dd73d11c8 100644 --- a/services/core/java/com/android/server/net/NetworkStatsService.java +++ b/services/core/java/com/android/server/net/NetworkStatsService.java @@ -381,6 +381,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { mContext.unregisterReceiver(mTetherReceiver); mContext.unregisterReceiver(mPollReceiver); mContext.unregisterReceiver(mRemovedReceiver); + mContext.unregisterReceiver(mUserReceiver); mContext.unregisterReceiver(mShutdownReceiver); final long currentTime = mTime.hasCache() ? mTime.currentTimeMillis() |