summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--services/java/com/android/server/MountService.java24
-rwxr-xr-xtests/AndroidTests/src/com/android/unit_tests/AsecTests.java11
2 files changed, 24 insertions, 11 deletions
diff --git a/services/java/com/android/server/MountService.java b/services/java/com/android/server/MountService.java
index a4703de..10920fa 100644
--- a/services/java/com/android/server/MountService.java
+++ b/services/java/com/android/server/MountService.java
@@ -100,6 +100,7 @@ class MountService extends IMountService.Stub
public static final int OpFailedMediaCorrupt = 403;
public static final int OpFailedVolNotMounted = 404;
public static final int OpFailedStorageBusy = 405;
+ public static final int OpFailedStorageNotFound = 406;
/*
* 600 series - Unsolicited broadcasts.
@@ -1290,21 +1291,22 @@ class MountService extends IMountService.Stub
waitForReady();
warnOnNotMounted();
- ArrayList<String> rsp = mConnector.doCommand("asec path " + id);
-
- for (String line : rsp) {
- String []tok = line.split(" ");
+ try {
+ ArrayList<String> rsp = mConnector.doCommand(String.format("asec path %s", id));
+ String []tok = rsp.get(0).split(" ");
int code = Integer.parseInt(tok[0]);
- if (code == VoldResponseCode.AsecPathResult) {
- return tok[1];
+ if (code != VoldResponseCode.AsecPathResult) {
+ throw new IllegalStateException(String.format("Unexpected response code %d", code));
+ }
+ return tok[1];
+ } catch (NativeDaemonConnectorException e) {
+ int code = e.getCode();
+ if (code == VoldResponseCode.OpFailedStorageNotFound) {
+ throw new IllegalArgumentException(String.format("Container '%s' not found", id));
} else {
- Log.e(TAG, String.format("Unexpected response code %d", code));
- return "";
+ throw new IllegalStateException(String.format("Unexpected response code %d", code));
}
}
-
- Log.e(TAG, "Got an empty response");
- return "";
}
public void finishMediaUpdate() {
diff --git a/tests/AndroidTests/src/com/android/unit_tests/AsecTests.java b/tests/AndroidTests/src/com/android/unit_tests/AsecTests.java
index 9aed363..9a75047 100755
--- a/tests/AndroidTests/src/com/android/unit_tests/AsecTests.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/AsecTests.java
@@ -259,6 +259,17 @@ public class AsecTests extends AndroidTestCase {
}
}
+ public void testNonExistPath() {
+ IMountService ms = getMs();
+ try {
+ String path = ms.getSecureContainerPath("jparks.broke.it");
+ failStr(path);
+ } catch (IllegalArgumentException e) {
+ } catch (Exception e) {
+ failStr(e);
+ }
+ }
+
public void testUnmountBusyContainer() {
IMountService ms = getMs();
try {