summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/pm/PackageManagerService.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android/server/pm/PackageManagerService.java')
-rw-r--r--services/java/com/android/server/pm/PackageManagerService.java4
1 files changed, 4 insertions, 0 deletions
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index b5ae214138fd..e19a80321b5d 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -4468,9 +4468,11 @@ public class PackageManagerService extends IPackageManager.Stub {
throws IOException {
if (!nativeLibraryDir.isDirectory()) {
nativeLibraryDir.delete();
+
if (!nativeLibraryDir.mkdir()) {
throw new IOException("Cannot create " + nativeLibraryDir.getPath());
}
+
try {
Libcore.os.chmod(nativeLibraryDir.getPath(), S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH
| S_IXOTH);
@@ -4478,6 +4480,8 @@ public class PackageManagerService extends IPackageManager.Stub {
throw new IOException("Cannot chmod native library directory "
+ nativeLibraryDir.getPath(), e);
}
+ } else if (!SELinux.restorecon(nativeLibraryDir)) {
+ throw new IOException("Cannot set SELinux context for " + nativeLibraryDir.getPath());
}
/*