From be08587510edbc149c841638db721eb97d2351b6 Mon Sep 17 00:00:00 2001 From: Jeff Davidson Date: Fri, 24 Oct 2014 10:35:53 -0700 Subject: [PATCH] Check UID instead of package name when preparing VPN. If a package is uninstalled and reinstalled, it should no longer be considered a prepared VPN in prepare(). While the package name remains constant in this case, the UID should not. Bug: 17980393 Change-Id: I29edf22ebe0550a7938d5a36c746c83dc068a0f9 --- services/core/java/com/android/server/connectivity/Vpn.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index 3f6b71a556c9e..83756aa8cd069 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -215,7 +215,7 @@ public class Vpn { */ public synchronized boolean prepare(String oldPackage, String newPackage) { // Return false if the package does not match. - if (oldPackage != null && !oldPackage.equals(mPackage)) { + if (oldPackage != null && getAppUid(oldPackage, mUserHandle) != mOwnerUID) { // The package doesn't match. If this VPN was not previously authorized, return false // to force user authorization. Otherwise, revoke the VPN anyway. if (!oldPackage.equals(VpnConfig.LEGACY_VPN) && isVpnUserPreConsented(oldPackage)) { @@ -234,8 +234,8 @@ public class Vpn { } // Return true if we do not need to revoke. - if (newPackage == null || - (newPackage.equals(mPackage) && !newPackage.equals(VpnConfig.LEGACY_VPN))) { + if (newPackage == null || (!newPackage.equals(VpnConfig.LEGACY_VPN) && + getAppUid(newPackage, mUserHandle) == mOwnerUID)) { return true; }