Loading cmds/installd/commands.cpp +1 −2 Original line number Original line Diff line number Diff line Loading @@ -1542,8 +1542,7 @@ fail: return -1; return -1; } } // TODO: extend to know about other volumes int restorecon_data(const char* uuid, const char* pkgName, int restorecon_data(const char* uuid __attribute__((unused)), const char* pkgName, const char* seinfo, uid_t uid) const char* seinfo, uid_t uid) { { struct dirent *entry; struct dirent *entry; Loading cmds/installd/installd.cpp +36 −28 Original line number Original line Diff line number Diff line Loading @@ -26,6 +26,14 @@ #define TOKEN_MAX 16 /* max number of arguments in buffer */ #define TOKEN_MAX 16 /* max number of arguments in buffer */ #define REPLY_MAX 256 /* largest reply allowed */ #define REPLY_MAX 256 /* largest reply allowed */ static char* parse_null(char* arg) { if (strcmp(arg, "!") == 0) { return nullptr; } else { return arg; } } static int do_ping(char **arg __unused, char reply[REPLY_MAX] __unused) static int do_ping(char **arg __unused, char reply[REPLY_MAX] __unused) { { return 0; return 0; Loading @@ -33,7 +41,7 @@ static int do_ping(char **arg __unused, char reply[REPLY_MAX] __unused) static int do_install(char **arg, char reply[REPLY_MAX] __unused) static int do_install(char **arg, char reply[REPLY_MAX] __unused) { { return install(nullptr, arg[0], atoi(arg[1]), atoi(arg[2]), arg[3]); /* pkgname, uid, gid, seinfo */ return install(parse_null(arg[0]), arg[1], atoi(arg[2]), atoi(arg[3]), arg[4]); /* uuid, pkgname, uid, gid, seinfo */ } } static int do_dexopt(char **arg, char reply[REPLY_MAX] __unused) static int do_dexopt(char **arg, char reply[REPLY_MAX] __unused) Loading Loading @@ -61,7 +69,7 @@ static int do_rm_dex(char **arg, char reply[REPLY_MAX] __unused) static int do_remove(char **arg, char reply[REPLY_MAX] __unused) static int do_remove(char **arg, char reply[REPLY_MAX] __unused) { { return uninstall(nullptr, arg[0], atoi(arg[1])); /* pkgname, userid */ return uninstall(parse_null(arg[0]), arg[1], atoi(arg[2])); /* uuid, pkgname, userid */ } } static int do_rename(char **arg, char reply[REPLY_MAX] __unused) static int do_rename(char **arg, char reply[REPLY_MAX] __unused) Loading @@ -71,22 +79,22 @@ static int do_rename(char **arg, char reply[REPLY_MAX] __unused) static int do_fixuid(char **arg, char reply[REPLY_MAX] __unused) static int do_fixuid(char **arg, char reply[REPLY_MAX] __unused) { { return fix_uid(nullptr, arg[0], atoi(arg[1]), atoi(arg[2])); /* pkgname, uid, gid */ return fix_uid(parse_null(arg[0]), arg[1], atoi(arg[2]), atoi(arg[3])); /* uuid, pkgname, uid, gid */ } } static int do_free_cache(char **arg, char reply[REPLY_MAX] __unused) /* TODO int:free_size */ static int do_free_cache(char **arg, char reply[REPLY_MAX] __unused) /* TODO int:free_size */ { { return free_cache(nullptr, (int64_t)atoll(arg[0])); /* free_size */ return free_cache(parse_null(arg[0]), (int64_t)atoll(arg[1])); /* uuid, free_size */ } } static int do_rm_cache(char **arg, char reply[REPLY_MAX] __unused) static int do_rm_cache(char **arg, char reply[REPLY_MAX] __unused) { { return delete_cache(nullptr, arg[0], atoi(arg[1])); /* pkgname, userid */ return delete_cache(parse_null(arg[0]), arg[1], atoi(arg[2])); /* uuid, pkgname, userid */ } } static int do_rm_code_cache(char **arg, char reply[REPLY_MAX] __unused) static int do_rm_code_cache(char **arg, char reply[REPLY_MAX] __unused) { { return delete_code_cache(nullptr, arg[0], atoi(arg[1])); /* pkgname, userid */ return delete_code_cache(parse_null(arg[0]), arg[1], atoi(arg[2])); /* uuid, pkgname, userid */ } } static int do_get_size(char **arg, char reply[REPLY_MAX]) static int do_get_size(char **arg, char reply[REPLY_MAX]) Loading @@ -97,9 +105,9 @@ static int do_get_size(char **arg, char reply[REPLY_MAX]) int64_t asecsize = 0; int64_t asecsize = 0; int res = 0; int res = 0; /* pkgdir, userid, apkpath */ /* uuid, pkgdir, userid, apkpath */ res = get_size(nullptr, arg[0], atoi(arg[1]), arg[2], arg[3], arg[4], arg[5], res = get_size(parse_null(arg[0]), arg[1], atoi(arg[2]), arg[3], arg[4], arg[5], arg[6], arg[6], &codesize, &datasize, &cachesize, &asecsize); arg[7], &codesize, &datasize, &cachesize, &asecsize); /* /* * Each int64_t can take up 22 characters printed out. Make sure it * Each int64_t can take up 22 characters printed out. Make sure it Loading @@ -112,13 +120,13 @@ static int do_get_size(char **arg, char reply[REPLY_MAX]) static int do_rm_user_data(char **arg, char reply[REPLY_MAX] __unused) static int do_rm_user_data(char **arg, char reply[REPLY_MAX] __unused) { { return delete_user_data(nullptr, arg[0], atoi(arg[1])); /* pkgname, userid */ return delete_user_data(parse_null(arg[0]), arg[1], atoi(arg[2])); /* uuid, pkgname, userid */ } } static int do_mk_user_data(char **arg, char reply[REPLY_MAX] __unused) static int do_mk_user_data(char **arg, char reply[REPLY_MAX] __unused) { { return make_user_data(nullptr, arg[0], atoi(arg[1]), atoi(arg[2]), arg[3]); return make_user_data(parse_null(arg[0]), arg[1], atoi(arg[2]), atoi(arg[3]), arg[4]); /* pkgname, uid, userid, seinfo */ /* uuid, pkgname, uid, userid, seinfo */ } } static int do_mk_user_config(char **arg, char reply[REPLY_MAX] __unused) static int do_mk_user_config(char **arg, char reply[REPLY_MAX] __unused) Loading @@ -128,7 +136,7 @@ static int do_mk_user_config(char **arg, char reply[REPLY_MAX] __unused) static int do_rm_user(char **arg, char reply[REPLY_MAX] __unused) static int do_rm_user(char **arg, char reply[REPLY_MAX] __unused) { { return delete_user(nullptr, atoi(arg[0])); /* userid */ return delete_user(parse_null(arg[0]), atoi(arg[1])); /* uuid, userid */ } } static int do_movefiles(char **arg __unused, char reply[REPLY_MAX] __unused) static int do_movefiles(char **arg __unused, char reply[REPLY_MAX] __unused) Loading @@ -138,7 +146,7 @@ static int do_movefiles(char **arg __unused, char reply[REPLY_MAX] __unused) static int do_linklib(char **arg, char reply[REPLY_MAX] __unused) static int do_linklib(char **arg, char reply[REPLY_MAX] __unused) { { return linklib(nullptr, arg[0], arg[1], atoi(arg[2])); return linklib(parse_null(arg[0]), arg[1], arg[2], atoi(arg[3])); } } static int do_idmap(char **arg, char reply[REPLY_MAX] __unused) static int do_idmap(char **arg, char reply[REPLY_MAX] __unused) Loading @@ -148,8 +156,8 @@ static int do_idmap(char **arg, char reply[REPLY_MAX] __unused) static int do_restorecon_data(char **arg, char reply[REPLY_MAX] __attribute__((unused))) static int do_restorecon_data(char **arg, char reply[REPLY_MAX] __attribute__((unused))) { { return restorecon_data(nullptr, arg[0], arg[1], atoi(arg[2])); return restorecon_data(parse_null(arg[0]), arg[1], arg[2], atoi(arg[3])); /* pkgName, seinfo, uid*/ /* uuid, pkgName, seinfo, uid*/ } } static int do_create_oat_dir(char **arg, char reply[REPLY_MAX] __unused) static int do_create_oat_dir(char **arg, char reply[REPLY_MAX] __unused) Loading @@ -172,26 +180,26 @@ struct cmdinfo { struct cmdinfo cmds[] = { struct cmdinfo cmds[] = { { "ping", 0, do_ping }, { "ping", 0, do_ping }, { "install", 4, do_install }, { "install", 5, do_install }, { "dexopt", 9, do_dexopt }, { "dexopt", 9, do_dexopt }, { "markbootcomplete", 1, do_mark_boot_complete }, { "markbootcomplete", 1, do_mark_boot_complete }, { "movedex", 3, do_move_dex }, { "movedex", 3, do_move_dex }, { "rmdex", 2, do_rm_dex }, { "rmdex", 2, do_rm_dex }, { "remove", 2, do_remove }, { "remove", 3, do_remove }, { "rename", 2, do_rename }, { "rename", 2, do_rename }, { "fixuid", 3, do_fixuid }, { "fixuid", 4, do_fixuid }, { "freecache", 1, do_free_cache }, { "freecache", 2, do_free_cache }, { "rmcache", 2, do_rm_cache }, { "rmcache", 3, do_rm_cache }, { "rmcodecache", 2, do_rm_code_cache }, { "rmcodecache", 3, do_rm_code_cache }, { "getsize", 7, do_get_size }, { "getsize", 8, do_get_size }, { "rmuserdata", 2, do_rm_user_data }, { "rmuserdata", 3, do_rm_user_data }, { "movefiles", 0, do_movefiles }, { "movefiles", 0, do_movefiles }, { "linklib", 3, do_linklib }, { "linklib", 4, do_linklib }, { "mkuserdata", 4, do_mk_user_data }, { "mkuserdata", 5, do_mk_user_data }, { "mkuserconfig", 1, do_mk_user_config }, { "mkuserconfig", 1, do_mk_user_config }, { "rmuser", 1, do_rm_user }, { "rmuser", 2, do_rm_user }, { "idmap", 3, do_idmap }, { "idmap", 3, do_idmap }, { "restorecondata", 3, do_restorecon_data }, { "restorecondata", 4, do_restorecon_data }, { "createoatdir", 2, do_create_oat_dir }, { "createoatdir", 2, do_create_oat_dir }, { "rmpackagedir", 1, do_rm_package_dir}, { "rmpackagedir", 1, do_rm_package_dir}, }; }; Loading cmds/installd/installd.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -231,7 +231,7 @@ int dexopt(const char *apk_path, uid_t uid, bool is_public, const char *pkgName, bool debuggable, const char* oat_dir); bool debuggable, const char* oat_dir); int mark_boot_complete(const char *instruction_set); int mark_boot_complete(const char *instruction_set); int movefiles(); int movefiles(); int linklib(const char *uuid, const char* target, const char* source, int userId); int linklib(const char* uuid, const char* pkgname, const char* asecLibDir, int userId); int idmap(const char *target_path, const char *overlay_path, uid_t uid); int idmap(const char *target_path, const char *overlay_path, uid_t uid); int restorecon_data(const char *uuid, const char* pkgName, const char* seinfo, uid_t uid); int restorecon_data(const char *uuid, const char* pkgName, const char* seinfo, uid_t uid); int create_oat_dir(const char* oat_dir, const char *instruction_set); int create_oat_dir(const char* oat_dir, const char *instruction_set); Loading Loading
cmds/installd/commands.cpp +1 −2 Original line number Original line Diff line number Diff line Loading @@ -1542,8 +1542,7 @@ fail: return -1; return -1; } } // TODO: extend to know about other volumes int restorecon_data(const char* uuid, const char* pkgName, int restorecon_data(const char* uuid __attribute__((unused)), const char* pkgName, const char* seinfo, uid_t uid) const char* seinfo, uid_t uid) { { struct dirent *entry; struct dirent *entry; Loading
cmds/installd/installd.cpp +36 −28 Original line number Original line Diff line number Diff line Loading @@ -26,6 +26,14 @@ #define TOKEN_MAX 16 /* max number of arguments in buffer */ #define TOKEN_MAX 16 /* max number of arguments in buffer */ #define REPLY_MAX 256 /* largest reply allowed */ #define REPLY_MAX 256 /* largest reply allowed */ static char* parse_null(char* arg) { if (strcmp(arg, "!") == 0) { return nullptr; } else { return arg; } } static int do_ping(char **arg __unused, char reply[REPLY_MAX] __unused) static int do_ping(char **arg __unused, char reply[REPLY_MAX] __unused) { { return 0; return 0; Loading @@ -33,7 +41,7 @@ static int do_ping(char **arg __unused, char reply[REPLY_MAX] __unused) static int do_install(char **arg, char reply[REPLY_MAX] __unused) static int do_install(char **arg, char reply[REPLY_MAX] __unused) { { return install(nullptr, arg[0], atoi(arg[1]), atoi(arg[2]), arg[3]); /* pkgname, uid, gid, seinfo */ return install(parse_null(arg[0]), arg[1], atoi(arg[2]), atoi(arg[3]), arg[4]); /* uuid, pkgname, uid, gid, seinfo */ } } static int do_dexopt(char **arg, char reply[REPLY_MAX] __unused) static int do_dexopt(char **arg, char reply[REPLY_MAX] __unused) Loading Loading @@ -61,7 +69,7 @@ static int do_rm_dex(char **arg, char reply[REPLY_MAX] __unused) static int do_remove(char **arg, char reply[REPLY_MAX] __unused) static int do_remove(char **arg, char reply[REPLY_MAX] __unused) { { return uninstall(nullptr, arg[0], atoi(arg[1])); /* pkgname, userid */ return uninstall(parse_null(arg[0]), arg[1], atoi(arg[2])); /* uuid, pkgname, userid */ } } static int do_rename(char **arg, char reply[REPLY_MAX] __unused) static int do_rename(char **arg, char reply[REPLY_MAX] __unused) Loading @@ -71,22 +79,22 @@ static int do_rename(char **arg, char reply[REPLY_MAX] __unused) static int do_fixuid(char **arg, char reply[REPLY_MAX] __unused) static int do_fixuid(char **arg, char reply[REPLY_MAX] __unused) { { return fix_uid(nullptr, arg[0], atoi(arg[1]), atoi(arg[2])); /* pkgname, uid, gid */ return fix_uid(parse_null(arg[0]), arg[1], atoi(arg[2]), atoi(arg[3])); /* uuid, pkgname, uid, gid */ } } static int do_free_cache(char **arg, char reply[REPLY_MAX] __unused) /* TODO int:free_size */ static int do_free_cache(char **arg, char reply[REPLY_MAX] __unused) /* TODO int:free_size */ { { return free_cache(nullptr, (int64_t)atoll(arg[0])); /* free_size */ return free_cache(parse_null(arg[0]), (int64_t)atoll(arg[1])); /* uuid, free_size */ } } static int do_rm_cache(char **arg, char reply[REPLY_MAX] __unused) static int do_rm_cache(char **arg, char reply[REPLY_MAX] __unused) { { return delete_cache(nullptr, arg[0], atoi(arg[1])); /* pkgname, userid */ return delete_cache(parse_null(arg[0]), arg[1], atoi(arg[2])); /* uuid, pkgname, userid */ } } static int do_rm_code_cache(char **arg, char reply[REPLY_MAX] __unused) static int do_rm_code_cache(char **arg, char reply[REPLY_MAX] __unused) { { return delete_code_cache(nullptr, arg[0], atoi(arg[1])); /* pkgname, userid */ return delete_code_cache(parse_null(arg[0]), arg[1], atoi(arg[2])); /* uuid, pkgname, userid */ } } static int do_get_size(char **arg, char reply[REPLY_MAX]) static int do_get_size(char **arg, char reply[REPLY_MAX]) Loading @@ -97,9 +105,9 @@ static int do_get_size(char **arg, char reply[REPLY_MAX]) int64_t asecsize = 0; int64_t asecsize = 0; int res = 0; int res = 0; /* pkgdir, userid, apkpath */ /* uuid, pkgdir, userid, apkpath */ res = get_size(nullptr, arg[0], atoi(arg[1]), arg[2], arg[3], arg[4], arg[5], res = get_size(parse_null(arg[0]), arg[1], atoi(arg[2]), arg[3], arg[4], arg[5], arg[6], arg[6], &codesize, &datasize, &cachesize, &asecsize); arg[7], &codesize, &datasize, &cachesize, &asecsize); /* /* * Each int64_t can take up 22 characters printed out. Make sure it * Each int64_t can take up 22 characters printed out. Make sure it Loading @@ -112,13 +120,13 @@ static int do_get_size(char **arg, char reply[REPLY_MAX]) static int do_rm_user_data(char **arg, char reply[REPLY_MAX] __unused) static int do_rm_user_data(char **arg, char reply[REPLY_MAX] __unused) { { return delete_user_data(nullptr, arg[0], atoi(arg[1])); /* pkgname, userid */ return delete_user_data(parse_null(arg[0]), arg[1], atoi(arg[2])); /* uuid, pkgname, userid */ } } static int do_mk_user_data(char **arg, char reply[REPLY_MAX] __unused) static int do_mk_user_data(char **arg, char reply[REPLY_MAX] __unused) { { return make_user_data(nullptr, arg[0], atoi(arg[1]), atoi(arg[2]), arg[3]); return make_user_data(parse_null(arg[0]), arg[1], atoi(arg[2]), atoi(arg[3]), arg[4]); /* pkgname, uid, userid, seinfo */ /* uuid, pkgname, uid, userid, seinfo */ } } static int do_mk_user_config(char **arg, char reply[REPLY_MAX] __unused) static int do_mk_user_config(char **arg, char reply[REPLY_MAX] __unused) Loading @@ -128,7 +136,7 @@ static int do_mk_user_config(char **arg, char reply[REPLY_MAX] __unused) static int do_rm_user(char **arg, char reply[REPLY_MAX] __unused) static int do_rm_user(char **arg, char reply[REPLY_MAX] __unused) { { return delete_user(nullptr, atoi(arg[0])); /* userid */ return delete_user(parse_null(arg[0]), atoi(arg[1])); /* uuid, userid */ } } static int do_movefiles(char **arg __unused, char reply[REPLY_MAX] __unused) static int do_movefiles(char **arg __unused, char reply[REPLY_MAX] __unused) Loading @@ -138,7 +146,7 @@ static int do_movefiles(char **arg __unused, char reply[REPLY_MAX] __unused) static int do_linklib(char **arg, char reply[REPLY_MAX] __unused) static int do_linklib(char **arg, char reply[REPLY_MAX] __unused) { { return linklib(nullptr, arg[0], arg[1], atoi(arg[2])); return linklib(parse_null(arg[0]), arg[1], arg[2], atoi(arg[3])); } } static int do_idmap(char **arg, char reply[REPLY_MAX] __unused) static int do_idmap(char **arg, char reply[REPLY_MAX] __unused) Loading @@ -148,8 +156,8 @@ static int do_idmap(char **arg, char reply[REPLY_MAX] __unused) static int do_restorecon_data(char **arg, char reply[REPLY_MAX] __attribute__((unused))) static int do_restorecon_data(char **arg, char reply[REPLY_MAX] __attribute__((unused))) { { return restorecon_data(nullptr, arg[0], arg[1], atoi(arg[2])); return restorecon_data(parse_null(arg[0]), arg[1], arg[2], atoi(arg[3])); /* pkgName, seinfo, uid*/ /* uuid, pkgName, seinfo, uid*/ } } static int do_create_oat_dir(char **arg, char reply[REPLY_MAX] __unused) static int do_create_oat_dir(char **arg, char reply[REPLY_MAX] __unused) Loading @@ -172,26 +180,26 @@ struct cmdinfo { struct cmdinfo cmds[] = { struct cmdinfo cmds[] = { { "ping", 0, do_ping }, { "ping", 0, do_ping }, { "install", 4, do_install }, { "install", 5, do_install }, { "dexopt", 9, do_dexopt }, { "dexopt", 9, do_dexopt }, { "markbootcomplete", 1, do_mark_boot_complete }, { "markbootcomplete", 1, do_mark_boot_complete }, { "movedex", 3, do_move_dex }, { "movedex", 3, do_move_dex }, { "rmdex", 2, do_rm_dex }, { "rmdex", 2, do_rm_dex }, { "remove", 2, do_remove }, { "remove", 3, do_remove }, { "rename", 2, do_rename }, { "rename", 2, do_rename }, { "fixuid", 3, do_fixuid }, { "fixuid", 4, do_fixuid }, { "freecache", 1, do_free_cache }, { "freecache", 2, do_free_cache }, { "rmcache", 2, do_rm_cache }, { "rmcache", 3, do_rm_cache }, { "rmcodecache", 2, do_rm_code_cache }, { "rmcodecache", 3, do_rm_code_cache }, { "getsize", 7, do_get_size }, { "getsize", 8, do_get_size }, { "rmuserdata", 2, do_rm_user_data }, { "rmuserdata", 3, do_rm_user_data }, { "movefiles", 0, do_movefiles }, { "movefiles", 0, do_movefiles }, { "linklib", 3, do_linklib }, { "linklib", 4, do_linklib }, { "mkuserdata", 4, do_mk_user_data }, { "mkuserdata", 5, do_mk_user_data }, { "mkuserconfig", 1, do_mk_user_config }, { "mkuserconfig", 1, do_mk_user_config }, { "rmuser", 1, do_rm_user }, { "rmuser", 2, do_rm_user }, { "idmap", 3, do_idmap }, { "idmap", 3, do_idmap }, { "restorecondata", 3, do_restorecon_data }, { "restorecondata", 4, do_restorecon_data }, { "createoatdir", 2, do_create_oat_dir }, { "createoatdir", 2, do_create_oat_dir }, { "rmpackagedir", 1, do_rm_package_dir}, { "rmpackagedir", 1, do_rm_package_dir}, }; }; Loading
cmds/installd/installd.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -231,7 +231,7 @@ int dexopt(const char *apk_path, uid_t uid, bool is_public, const char *pkgName, bool debuggable, const char* oat_dir); bool debuggable, const char* oat_dir); int mark_boot_complete(const char *instruction_set); int mark_boot_complete(const char *instruction_set); int movefiles(); int movefiles(); int linklib(const char *uuid, const char* target, const char* source, int userId); int linklib(const char* uuid, const char* pkgname, const char* asecLibDir, int userId); int idmap(const char *target_path, const char *overlay_path, uid_t uid); int idmap(const char *target_path, const char *overlay_path, uid_t uid); int restorecon_data(const char *uuid, const char* pkgName, const char* seinfo, uid_t uid); int restorecon_data(const char *uuid, const char* pkgName, const char* seinfo, uid_t uid); int create_oat_dir(const char* oat_dir, const char *instruction_set); int create_oat_dir(const char* oat_dir, const char *instruction_set); Loading