summaryrefslogtreecommitdiffstats
path: root/core/java/android/accounts/AccountManagerService.java
diff options
context:
space:
mode:
authorMarc Blank <mblank@google.com>2012-03-18 19:16:41 -0700
committerMarc Blank <mblank@google.com>2012-03-18 19:18:49 -0700
commitc6b0f99bb31405902b40a96f6491a9adcaaac169 (patch)
tree6f7a7be2b7ec25c6d920a6d5611ef4bc17349d6d /core/java/android/accounts/AccountManagerService.java
parentddc421d19c797096de77c24f68a37ad23216e2a7 (diff)
downloadframeworks_base-c6b0f99bb31405902b40a96f6491a9adcaaac169.zip
frameworks_base-c6b0f99bb31405902b40a96f6491a9adcaaac169.tar.gz
frameworks_base-c6b0f99bb31405902b40a96f6491a9adcaaac169.tar.bz2
Use renameTo safely when creating the user 0 account database
* Because the user directory probably won't exist, the renameTo in previous code fails silently Bug: 6188815 Change-Id: I6afd1bad9bbd1a36de7e93d9e02ed7172b1ed370
Diffstat (limited to 'core/java/android/accounts/AccountManagerService.java')
-rw-r--r--core/java/android/accounts/AccountManagerService.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/core/java/android/accounts/AccountManagerService.java b/core/java/android/accounts/AccountManagerService.java
index adc7d35..28b7dd3 100644
--- a/core/java/android/accounts/AccountManagerService.java
+++ b/core/java/android/accounts/AccountManagerService.java
@@ -1817,7 +1817,16 @@ public class AccountManagerService
// Migrate old file, if it exists, to the new location
File oldFile = new File(systemDir, DATABASE_NAME);
if (oldFile.exists()) {
- oldFile.renameTo(databaseFile);
+ // Check for use directory; create if it doesn't exist, else renameTo will fail
+ File userDir = new File(systemDir, "users/" + userId);
+ if (!userDir.exists()) {
+ if (!userDir.mkdirs()) {
+ throw new IllegalStateException("User dir cannot be created: " + userDir);
+ }
+ }
+ if (!oldFile.renameTo(databaseFile)) {
+ throw new IllegalStateException("User dir cannot be migrated: " + databaseFile);
+ }
}
}
return databaseFile.getPath();