Merge "Use renameTo safely when creating the user 0 account database"

This commit is contained in:
Marc Blank
2012-03-18 21:37:52 -07:00
committed by Android (Google) Code Review

View File

@@ -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();