summaryrefslogtreecommitdiff
path: root/cmds/installd/installd.cpp
diff options
context:
space:
mode:
author Jeff Sharkey <jsharkey@android.com> 2016-04-14 20:45:06 -0600
committer Jeff Sharkey <jsharkey@android.com> 2016-04-15 13:35:52 -0600
commit379a12b0072b322c7f86e690a8e8a220e500861c (patch)
treeedfc822e311e563c48c49b6f76af66c2dffcbdc3 /cmds/installd/installd.cpp
parent8bf556ec85af8d4d47aad5a19a0633cf8b0fa17e (diff)
Consistent creation/destruction of user data.
Preparing and destroying users currently needs to be split across installd, system_server, and vold, since no single party has all the required SELinux permissions. Start passing down flags so we only prepare/destroy storage areas that have keys currently installed. Add delete_dir_contents_and_dir() argument to ignore ENOENT, since all we care about is the directory being gone. Bug: 27896918 Change-Id: Ia1cccc9b35e6ff09e3ca50effeab676157b856e8
Diffstat (limited to 'cmds/installd/installd.cpp')
-rw-r--r--cmds/installd/installd.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/cmds/installd/installd.cpp b/cmds/installd/installd.cpp
index 5c29eb42b5..eb51e709de 100644
--- a/cmds/installd/installd.cpp
+++ b/cmds/installd/installd.cpp
@@ -336,14 +336,16 @@ static int do_move_complete_app(char **arg, char reply[REPLY_MAX] ATTRIBUTE_UNUS
atoi(arg[4]), arg[5], atoi(arg[6]));
}
-static int do_mk_user_config(char **arg, char reply[REPLY_MAX] ATTRIBUTE_UNUSED)
+static int do_create_user_data(char **arg, char reply[REPLY_MAX] ATTRIBUTE_UNUSED)
{
- return make_user_config(atoi(arg[0])); /* userid */
+ /* const char *uuid, userid_t userid, int user_serial, int flags */
+ return create_user_data(parse_null(arg[0]), atoi(arg[1]), atoi(arg[2]), atoi(arg[3]));
}
-static int do_rm_user(char **arg, char reply[REPLY_MAX] ATTRIBUTE_UNUSED)
+static int do_destroy_user_data(char **arg, char reply[REPLY_MAX] ATTRIBUTE_UNUSED)
{
- return delete_user(parse_null(arg[0]), atoi(arg[1])); /* uuid, userid */
+ /* const char *uuid, userid_t userid, int flags */
+ return destroy_user_data(parse_null(arg[0]), atoi(arg[1]), atoi(arg[2]));
}
static int do_linklib(char **arg, char reply[REPLY_MAX] ATTRIBUTE_UNUSED)
@@ -409,13 +411,14 @@ struct cmdinfo cmds[] = {
{ "get_app_size", 6, do_get_app_size },
{ "get_app_data_inode", 4, do_get_app_data_inode },
+ { "create_user_data", 4, do_create_user_data },
+ { "destroy_user_data", 3, do_destroy_user_data },
+
{ "dexopt", 9, do_dexopt },
{ "markbootcomplete", 1, do_mark_boot_complete },
{ "rmdex", 2, do_rm_dex },
{ "freecache", 2, do_free_cache },
{ "linklib", 4, do_linklib },
- { "mkuserconfig", 1, do_mk_user_config },
- { "rmuser", 2, do_rm_user },
{ "idmap", 3, do_idmap },
{ "createoatdir", 2, do_create_oat_dir },
{ "rmpackagedir", 1, do_rm_package_dir },