From bceef6f4230a307f0c075f4742018e97499eab42 Mon Sep 17 00:00:00 2001 From: lucaslin Date: Tue, 22 Sep 2020 20:52:27 +0800 Subject: [PATCH] Add synchronized to make sure data correctness Both mNetworkAgent and mConfig are mutable, add synchronized to make sure the data correctness of those two vars when getNetId() and getVpnConfig() are called. Bug: 168576152 Test: atest FrameworkNetTests atest CtsHostsideNetworkTests:HostsideVpnTests Change-Id: I4133de84c904009b5fbf4208853773fc79fdd17f --- .../core/java/com/android/server/connectivity/Vpn.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index 9817abfec4bdb..a5c78b62b2d2b 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -1128,7 +1128,13 @@ public class Vpn { return mNetworkInfo; } - public int getNetId() { + /** + * Return netId of current running VPN network. + * + * @return a netId if there is a running VPN network or NETID_UNSET if there is no running VPN + * network or network is null. + */ + public synchronized int getNetId() { final NetworkAgent agent = mNetworkAgent; if (null == agent) return NETID_UNSET; final Network network = agent.getNetwork(); @@ -1706,7 +1712,7 @@ public class Vpn { /** * Return the configuration of the currently running VPN. */ - public VpnConfig getVpnConfig() { + public synchronized VpnConfig getVpnConfig() { enforceControlPermission(); return mConfig; }