summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNarayan Kamath <narayan@google.com>2013-10-11 13:43:30 +0100
committerNarayan Kamath <narayan@google.com>2013-10-14 09:07:40 +0000
commit12b28ce4e82fcd3ed46ffac77fb866bb5aee4408 (patch)
tree2117fb98d212e2d7798e64bd9fc8bd11bfeaa9ae
parent849a41a8652dc85cf44001017dff0db4408e85b5 (diff)
downloadframeworks_base-12b28ce4e82fcd3ed46ffac77fb866bb5aee4408.zip
frameworks_base-12b28ce4e82fcd3ed46ffac77fb866bb5aee4408.tar.gz
frameworks_base-12b28ce4e82fcd3ed46ffac77fb866bb5aee4408.tar.bz2
Fix minor thread corectness issue in NetworkInfo
Hold the right lock while copying info from another NetworkInfo object to prevent changes being made to it while the copy is in progress. Change-Id: I1aa2c29e81e045b0359f957352c438e79e692823
-rw-r--r--core/java/android/net/NetworkInfo.java26
1 files changed, 14 insertions, 12 deletions
diff --git a/core/java/android/net/NetworkInfo.java b/core/java/android/net/NetworkInfo.java
index 4d2a70d..53b1308 100644
--- a/core/java/android/net/NetworkInfo.java
+++ b/core/java/android/net/NetworkInfo.java
@@ -156,18 +156,20 @@ public class NetworkInfo implements Parcelable {
/** {@hide} */
public NetworkInfo(NetworkInfo source) {
if (source != null) {
- mNetworkType = source.mNetworkType;
- mSubtype = source.mSubtype;
- mTypeName = source.mTypeName;
- mSubtypeName = source.mSubtypeName;
- mState = source.mState;
- mDetailedState = source.mDetailedState;
- mReason = source.mReason;
- mExtraInfo = source.mExtraInfo;
- mIsFailover = source.mIsFailover;
- mIsRoaming = source.mIsRoaming;
- mIsAvailable = source.mIsAvailable;
- mIsConnectedToProvisioningNetwork = source.mIsConnectedToProvisioningNetwork;
+ synchronized (source) {
+ mNetworkType = source.mNetworkType;
+ mSubtype = source.mSubtype;
+ mTypeName = source.mTypeName;
+ mSubtypeName = source.mSubtypeName;
+ mState = source.mState;
+ mDetailedState = source.mDetailedState;
+ mReason = source.mReason;
+ mExtraInfo = source.mExtraInfo;
+ mIsFailover = source.mIsFailover;
+ mIsRoaming = source.mIsRoaming;
+ mIsAvailable = source.mIsAvailable;
+ mIsConnectedToProvisioningNetwork = source.mIsConnectedToProvisioningNetwork;
+ }
}
}