summaryrefslogtreecommitdiffstats
path: root/services/usb
diff options
context:
space:
mode:
authorEmily Bernier <ember@google.com>2014-06-26 16:01:29 -0400
committerEmily Bernier <ember@google.com>2014-07-09 13:23:15 -0400
commit1848d31c2cbb5404be383ad44049e58e36b258ba (patch)
tree46230f0d431eca763764ab5039aefcd27c92ae6e /services/usb
parent4143bc5f09a0ff73ca92caf3b2012c0ffd780555 (diff)
downloadframeworks_base-1848d31c2cbb5404be383ad44049e58e36b258ba.zip
frameworks_base-1848d31c2cbb5404be383ad44049e58e36b258ba.tar.gz
frameworks_base-1848d31c2cbb5404be383ad44049e58e36b258ba.tar.bz2
Prevent users from mounting USB, if restricted.
Bug: 13585295 Change-Id: I6b7905fad06bf2e1d4dd629a266280ddff9b3121
Diffstat (limited to 'services/usb')
-rw-r--r--services/usb/java/com/android/server/usb/UsbDeviceManager.java13
-rw-r--r--services/usb/java/com/android/server/usb/UsbService.java10
2 files changed, 22 insertions, 1 deletions
diff --git a/services/usb/java/com/android/server/usb/UsbDeviceManager.java b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
index 6822ee3..5233297 100644
--- a/services/usb/java/com/android/server/usb/UsbDeviceManager.java
+++ b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
@@ -39,6 +39,7 @@ import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UEventObserver;
import android.os.UserHandle;
+import android.os.UserManager;
import android.os.storage.StorageManager;
import android.os.storage.StorageVolume;
import android.provider.Settings;
@@ -655,6 +656,17 @@ public class UsbDeviceManager {
}
break;
case MSG_USER_SWITCHED: {
+ mCurrentUser = msg.arg1;
+
+ UserManager userManager =
+ (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+ if (userManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER)) {
+ Slog.v(TAG, "Switched to user with DISALLOW_USB_FILE_TRANSFER restriction;"
+ + " disabling USB.");
+ setUsbConfig("none");
+ break;
+ }
+
final boolean mtpActive =
containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_MTP)
|| containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_PTP);
@@ -663,7 +675,6 @@ public class UsbDeviceManager {
setUsbConfig("none");
setUsbConfig(mCurrentFunctions);
}
- mCurrentUser = msg.arg1;
break;
}
}
diff --git a/services/usb/java/com/android/server/usb/UsbService.java b/services/usb/java/com/android/server/usb/UsbService.java
index b6ae192..fd83f92 100644
--- a/services/usb/java/com/android/server/usb/UsbService.java
+++ b/services/usb/java/com/android/server/usb/UsbService.java
@@ -28,6 +28,7 @@ import android.hardware.usb.UsbDevice;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.os.UserHandle;
+import android.os.UserManager;
import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
@@ -248,6 +249,15 @@ public class UsbService extends IUsbManager.Stub {
@Override
public void setCurrentFunction(String function, boolean makeDefault) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+
+ // If attempt to change USB function while file transfer is restricted, ensure that
+ // the current function is set to "none", and return.
+ UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+ if (userManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER)) {
+ if (mDeviceManager != null) mDeviceManager.setCurrentFunctions("none", false);
+ return;
+ }
+
if (mDeviceManager != null) {
mDeviceManager.setCurrentFunctions(function, makeDefault);
} else {