Other program directories should not be writable.
Examine all the install programs on the device, and verify
that the programs don't have world writable data directories.
Change-Id: I23272bc8d238df6b772abfbf7046ac8aacdf921f
diff --git a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
index f1ac732..eec1735 100644
--- a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
@@ -16,16 +16,21 @@
package android.permission.cts;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
import android.os.Environment;
import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.util.List;
/**
* Verify certain permissions on the filesystem
*/
+@MediumTest
public class FileSystemPermissionTest extends AndroidTestCase {
public void testCreateFileHasSanePermissions() throws Exception {
@@ -68,6 +73,18 @@
}
}
+ public void testOtherApplicationDirectoriesAreNotWritable() throws Exception {
+ List<ApplicationInfo> apps = getContext()
+ .getPackageManager()
+ .getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
+ String myAppDirectory = getContext().getApplicationInfo().dataDir;
+ for (ApplicationInfo app : apps) {
+ if (!myAppDirectory.equals(app.dataDir)) {
+ assertDirectoryNotWritable(new File(app.dataDir));
+ }
+ }
+ }
+
public void testApplicationParentDirectoryNotWritable() throws Exception {
String myDataDir = getContext().getApplicationInfo().dataDir;
File parentDir = new File(myDataDir).getParentFile();
@@ -95,7 +112,7 @@
try {
toCreate.createNewFile();
fail("Expected \"java.io.IOException: Permission denied\""
- + " while examining " + toCreate.getAbsolutePath());
+ + " when trying to create " + toCreate.getAbsolutePath());
} catch (IOException e) {
// It's expected we'll get a "Permission denied" exception.
} finally {