diff options
author | Emily Bernier <ember@google.com> | 2014-06-26 16:01:29 -0400 |
---|---|---|
committer | Emily Bernier <ember@google.com> | 2014-07-09 13:23:15 -0400 |
commit | 1848d31c2cbb5404be383ad44049e58e36b258ba (patch) | |
tree | 46230f0d431eca763764ab5039aefcd27c92ae6e /services/usb | |
parent | 4143bc5f09a0ff73ca92caf3b2012c0ffd780555 (diff) | |
download | frameworks_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.java | 13 | ||||
-rw-r--r-- | services/usb/java/com/android/server/usb/UsbService.java | 10 |
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 { |