From 1b1bcd7b7370866bc00ce3361be8d5167bf3e28d Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Fri, 12 Feb 2016 18:11:30 +0000 Subject: [PATCH] Disallow prepare()-ing over an always on VPN app Bug: 27042309 Change-Id: I6aa069a91f20b645f4d23e796ea03b0355155c41 --- .../core/java/com/android/server/connectivity/Vpn.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index f231f922a0e60..e87a2b5df2a3d 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -264,7 +264,12 @@ public class Vpn { return true; } - // Check if the caller is authorized. + // Stop an existing always-on VPN from being dethroned by other apps. + if (getAlwaysOnPackage() != null) { + return false; + } + + // Check that the caller is authorized. enforceControlPermission(); prepareInternal(newPackage);