From c5e057c736dd6552586b104bcd06a6c12c573e28 Mon Sep 17 00:00:00 2001 From: Suprabh Shukla Date: Mon, 8 Aug 2016 16:22:44 -0700 Subject: [PATCH] Checking for storage space before adding user If storage space is low, trying to create a user results in a crash. Adding a check to abort user creation and log a warning in such a case. Bug: 30270050 Change-Id: I121119aed340c7be337b2147c4386c9bb9f8ffdc --- .../java/com/android/server/pm/UserManagerService.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index e489d969dceb3..bdb138e83fbe8 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -95,7 +95,7 @@ import com.android.internal.widget.LockPatternUtils; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.am.UserState; - +import com.android.server.storage.DeviceStorageMonitorInternal; import libcore.io.IoUtils; import libcore.util.Objects; @@ -2184,6 +2184,12 @@ public class UserManagerService extends IUserManager.Stub { Log.w(LOG_TAG, "Cannot add user. DISALLOW_ADD_USER is enabled."); return null; } + DeviceStorageMonitorInternal dsm = LocalServices + .getService(DeviceStorageMonitorInternal.class); + if (dsm.isMemoryLow()) { + Log.w(LOG_TAG, "Cannot add user. Not enough space on disk."); + return null; + } return createUserInternalUnchecked(name, flags, parentId); }