From ec7ed14c183a2ab958817694bad53bdc8b05e49e Mon Sep 17 00:00:00 2001 From: rpcraig Date: Wed, 25 Jul 2012 13:10:37 -0400 Subject: restorecon /data/anr directory. Restore the security contexts of anr directory when initially created. Change-Id: Ia731414ccbcdc7369d24be6db0003c53abcf6ef4 Signed-off-by: rpcraig --- .../com/android/server/am/ActivityManagerService.java | 15 +++++++++++++-- services/java/com/android/server/am/DeviceMonitor.java | 4 ++++ 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'services/java') diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 60085f4f8e9a..73deef0dd377 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -106,6 +106,7 @@ import android.os.ParcelFileDescriptor; import android.os.Process; import android.os.RemoteCallbackList; import android.os.RemoteException; +import android.os.SELinux; import android.os.ServiceManager; import android.os.StrictMode; import android.os.SystemClock; @@ -3032,7 +3033,12 @@ public final class ActivityManagerService extends ActivityManagerNative File tracesFile = new File(tracesPath); try { File tracesDir = tracesFile.getParentFile(); - if (!tracesDir.exists()) tracesFile.mkdirs(); + if (!tracesDir.exists()) { + tracesFile.mkdirs(); + if (!SELinux.restorecon(tracesDir)) { + return null; + } + } FileUtils.setPermissions(tracesDir.getPath(), 0775, -1, -1); // drwxrwxr-x if (clearTraces && tracesFile.exists()) tracesFile.delete(); @@ -3136,7 +3142,12 @@ public final class ActivityManagerService extends ActivityManagerNative final File tracesDir = tracesFile.getParentFile(); final File tracesTmp = new File(tracesDir, "__tmp__"); try { - if (!tracesDir.exists()) tracesFile.mkdirs(); + if (!tracesDir.exists()) { + tracesFile.mkdirs(); + if (!SELinux.restorecon(tracesDir.getPath())) { + return; + } + } FileUtils.setPermissions(tracesDir.getPath(), 0775, -1, -1); // drwxrwxr-x if (tracesFile.exists()) { diff --git a/services/java/com/android/server/am/DeviceMonitor.java b/services/java/com/android/server/am/DeviceMonitor.java index 5f3b0ce6996f..21e7252bf24d 100644 --- a/services/java/com/android/server/am/DeviceMonitor.java +++ b/services/java/com/android/server/am/DeviceMonitor.java @@ -16,6 +16,7 @@ package com.android.server.am; +import android.os.SELinux; import android.util.Slog; import java.io.*; @@ -80,6 +81,9 @@ class DeviceMonitor { if (!BASE.isDirectory() && !BASE.mkdirs()) { throw new AssertionError("Couldn't create " + BASE + "."); } + if (!SELinux.restorecon(BASE)) { + throw new AssertionError("Couldn't restorecon " + BASE + "."); + } } private static final File[] PATHS = { -- cgit v1.2.3-59-g8ed1b