Loading cmds/installd/Android.mk +3 −2 Original line number Diff line number Diff line Loading @@ -11,8 +11,9 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := \ $(common_src_files) LOCAL_CFLAGS := -std=gnu99 LOCAL_MODULE := libinstalld LOCAL_MODULE_TAGS := eng tests include $(BUILD_STATIC_LIBRARY) Loading @@ -35,7 +36,7 @@ LOCAL_STATIC_LIBRARIES := \ libdiskusage LOCAL_MODULE := installd LOCAL_CFLAGS := -std=gnu99 LOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE) cmds/installd/commands.c +6 −10 Original line number Diff line number Diff line Loading @@ -28,15 +28,13 @@ dir_rec_t android_app_lib_dir; dir_rec_t android_media_dir; dir_rec_array_t android_system_dirs; int install(const char *pkgname, uid_t uid, gid_t gid, bool restrictHomeDir) int install(const char *pkgname, uid_t uid, gid_t gid) { char pkgdir[PKG_PATH_MAX]; char libsymlink[PKG_PATH_MAX]; char applibdir[PKG_PATH_MAX]; struct stat libStat; mode_t defaultMode = restrictHomeDir ? 0700 : 0751; if ((uid < AID_SYSTEM) || (gid < AID_SYSTEM)) { ALOGE("invalid uid/gid: %d %d\n", uid, gid); return -1; Loading @@ -57,11 +55,11 @@ int install(const char *pkgname, uid_t uid, gid_t gid, bool restrictHomeDir) return -1; } if (mkdir(pkgdir, defaultMode) < 0) { if (mkdir(pkgdir, 0751) < 0) { ALOGE("cannot create dir '%s': %s\n", pkgdir, strerror(errno)); return -1; } if (chmod(pkgdir, defaultMode) < 0) { if (chmod(pkgdir, 0751) < 0) { ALOGE("cannot chmod dir '%s': %s\n", pkgdir, strerror(errno)); unlink(pkgdir); return -1; Loading Loading @@ -186,15 +184,13 @@ int delete_user_data(const char *pkgname, uid_t persona) return delete_dir_contents(pkgdir, 0, "lib"); } int make_user_data(const char *pkgname, uid_t uid, uid_t persona, bool restrictHomeDir) int make_user_data(const char *pkgname, uid_t uid, uid_t persona) { char pkgdir[PKG_PATH_MAX]; char applibdir[PKG_PATH_MAX]; char libsymlink[PKG_PATH_MAX]; struct stat libStat; mode_t defaultMode = restrictHomeDir ? 0700 : 0751; // Create the data dir for the package if (create_pkg_path(pkgdir, pkgname, PKG_DIR_POSTFIX, persona)) { return -1; Loading @@ -208,11 +204,11 @@ int make_user_data(const char *pkgname, uid_t uid, uid_t persona, bool restrictH return -1; } if (mkdir(pkgdir, defaultMode) < 0) { if (mkdir(pkgdir, 0751) < 0) { ALOGE("cannot create dir '%s': %s\n", pkgdir, strerror(errno)); return -errno; } if (chmod(pkgdir, defaultMode) < 0) { if (chmod(pkgdir, 0751) < 0) { ALOGE("cannot chmod dir '%s': %s\n", pkgdir, strerror(errno)); unlink(pkgdir); return -errno; Loading cmds/installd/installd.c +4 −12 Original line number Diff line number Diff line Loading @@ -31,11 +31,7 @@ static int do_ping(char **arg, char reply[REPLY_MAX]) static int do_install(char **arg, char reply[REPLY_MAX]) { bool restrictHomeDir = (strncmp(arg[3], "false", 6) != 0); return install(arg[0], /* pkgname */ atoi(arg[1]), /* uid */ atoi(arg[2]), /* gid */ restrictHomeDir); /* restrictHomeDir */ return install(arg[0], atoi(arg[1]), atoi(arg[2])); /* pkgname, uid, gid */ } static int do_dexopt(char **arg, char reply[REPLY_MAX]) Loading Loading @@ -107,11 +103,7 @@ static int do_rm_user_data(char **arg, char reply[REPLY_MAX]) static int do_mk_user_data(char **arg, char reply[REPLY_MAX]) { bool restrictHomeDir = (strncmp(arg[3], "false", 6) != 0); return make_user_data(arg[0], /* pkgname */ atoi(arg[1]), /* uid */ atoi(arg[2]), /* userid */ restrictHomeDir); /* restrictHomeDir */ return make_user_data(arg[0], atoi(arg[1]), atoi(arg[2])); /* pkgname, uid, userid */ } static int do_rm_user(char **arg, char reply[REPLY_MAX]) Loading @@ -137,7 +129,7 @@ struct cmdinfo { struct cmdinfo cmds[] = { { "ping", 0, do_ping }, { "install", 4, do_install }, { "install", 3, do_install }, { "dexopt", 3, do_dexopt }, { "movedex", 2, do_move_dex }, { "rmdex", 1, do_rm_dex }, Loading @@ -150,7 +142,7 @@ struct cmdinfo cmds[] = { { "rmuserdata", 2, do_rm_user_data }, { "movefiles", 0, do_movefiles }, { "linklib", 3, do_linklib }, { "mkuserdata", 4, do_mk_user_data }, { "mkuserdata", 3, do_mk_user_data }, { "rmuser", 1, do_rm_user }, }; Loading cmds/installd/installd.h +2 −5 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <stdbool.h> #include <inttypes.h> #include <sys/stat.h> #include <dirent.h> Loading Loading @@ -193,14 +192,12 @@ int ensure_media_user_dirs(userid_t userid); /* commands.c */ int install(const char *pkgname, uid_t uid, gid_t gid, bool restrictHomeDirectory); int install(const char *pkgname, uid_t uid, gid_t gid); int uninstall(const char *pkgname, uid_t persona); int renamepkg(const char *oldpkgname, const char *newpkgname); int fix_uid(const char *pkgname, uid_t uid, gid_t gid); int delete_user_data(const char *pkgname, uid_t persona); int make_user_data(const char *pkgname, uid_t uid, uid_t persona, bool restrictHomeDirectory); int make_user_data(const char *pkgname, uid_t uid, uid_t persona); int delete_persona(uid_t persona); int delete_cache(const char *pkgname, uid_t persona); int move_dex(const char *src, const char *dst); Loading Loading
cmds/installd/Android.mk +3 −2 Original line number Diff line number Diff line Loading @@ -11,8 +11,9 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := \ $(common_src_files) LOCAL_CFLAGS := -std=gnu99 LOCAL_MODULE := libinstalld LOCAL_MODULE_TAGS := eng tests include $(BUILD_STATIC_LIBRARY) Loading @@ -35,7 +36,7 @@ LOCAL_STATIC_LIBRARIES := \ libdiskusage LOCAL_MODULE := installd LOCAL_CFLAGS := -std=gnu99 LOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE)
cmds/installd/commands.c +6 −10 Original line number Diff line number Diff line Loading @@ -28,15 +28,13 @@ dir_rec_t android_app_lib_dir; dir_rec_t android_media_dir; dir_rec_array_t android_system_dirs; int install(const char *pkgname, uid_t uid, gid_t gid, bool restrictHomeDir) int install(const char *pkgname, uid_t uid, gid_t gid) { char pkgdir[PKG_PATH_MAX]; char libsymlink[PKG_PATH_MAX]; char applibdir[PKG_PATH_MAX]; struct stat libStat; mode_t defaultMode = restrictHomeDir ? 0700 : 0751; if ((uid < AID_SYSTEM) || (gid < AID_SYSTEM)) { ALOGE("invalid uid/gid: %d %d\n", uid, gid); return -1; Loading @@ -57,11 +55,11 @@ int install(const char *pkgname, uid_t uid, gid_t gid, bool restrictHomeDir) return -1; } if (mkdir(pkgdir, defaultMode) < 0) { if (mkdir(pkgdir, 0751) < 0) { ALOGE("cannot create dir '%s': %s\n", pkgdir, strerror(errno)); return -1; } if (chmod(pkgdir, defaultMode) < 0) { if (chmod(pkgdir, 0751) < 0) { ALOGE("cannot chmod dir '%s': %s\n", pkgdir, strerror(errno)); unlink(pkgdir); return -1; Loading Loading @@ -186,15 +184,13 @@ int delete_user_data(const char *pkgname, uid_t persona) return delete_dir_contents(pkgdir, 0, "lib"); } int make_user_data(const char *pkgname, uid_t uid, uid_t persona, bool restrictHomeDir) int make_user_data(const char *pkgname, uid_t uid, uid_t persona) { char pkgdir[PKG_PATH_MAX]; char applibdir[PKG_PATH_MAX]; char libsymlink[PKG_PATH_MAX]; struct stat libStat; mode_t defaultMode = restrictHomeDir ? 0700 : 0751; // Create the data dir for the package if (create_pkg_path(pkgdir, pkgname, PKG_DIR_POSTFIX, persona)) { return -1; Loading @@ -208,11 +204,11 @@ int make_user_data(const char *pkgname, uid_t uid, uid_t persona, bool restrictH return -1; } if (mkdir(pkgdir, defaultMode) < 0) { if (mkdir(pkgdir, 0751) < 0) { ALOGE("cannot create dir '%s': %s\n", pkgdir, strerror(errno)); return -errno; } if (chmod(pkgdir, defaultMode) < 0) { if (chmod(pkgdir, 0751) < 0) { ALOGE("cannot chmod dir '%s': %s\n", pkgdir, strerror(errno)); unlink(pkgdir); return -errno; Loading
cmds/installd/installd.c +4 −12 Original line number Diff line number Diff line Loading @@ -31,11 +31,7 @@ static int do_ping(char **arg, char reply[REPLY_MAX]) static int do_install(char **arg, char reply[REPLY_MAX]) { bool restrictHomeDir = (strncmp(arg[3], "false", 6) != 0); return install(arg[0], /* pkgname */ atoi(arg[1]), /* uid */ atoi(arg[2]), /* gid */ restrictHomeDir); /* restrictHomeDir */ return install(arg[0], atoi(arg[1]), atoi(arg[2])); /* pkgname, uid, gid */ } static int do_dexopt(char **arg, char reply[REPLY_MAX]) Loading Loading @@ -107,11 +103,7 @@ static int do_rm_user_data(char **arg, char reply[REPLY_MAX]) static int do_mk_user_data(char **arg, char reply[REPLY_MAX]) { bool restrictHomeDir = (strncmp(arg[3], "false", 6) != 0); return make_user_data(arg[0], /* pkgname */ atoi(arg[1]), /* uid */ atoi(arg[2]), /* userid */ restrictHomeDir); /* restrictHomeDir */ return make_user_data(arg[0], atoi(arg[1]), atoi(arg[2])); /* pkgname, uid, userid */ } static int do_rm_user(char **arg, char reply[REPLY_MAX]) Loading @@ -137,7 +129,7 @@ struct cmdinfo { struct cmdinfo cmds[] = { { "ping", 0, do_ping }, { "install", 4, do_install }, { "install", 3, do_install }, { "dexopt", 3, do_dexopt }, { "movedex", 2, do_move_dex }, { "rmdex", 1, do_rm_dex }, Loading @@ -150,7 +142,7 @@ struct cmdinfo cmds[] = { { "rmuserdata", 2, do_rm_user_data }, { "movefiles", 0, do_movefiles }, { "linklib", 3, do_linklib }, { "mkuserdata", 4, do_mk_user_data }, { "mkuserdata", 3, do_mk_user_data }, { "rmuser", 1, do_rm_user }, }; Loading
cmds/installd/installd.h +2 −5 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <stdbool.h> #include <inttypes.h> #include <sys/stat.h> #include <dirent.h> Loading Loading @@ -193,14 +192,12 @@ int ensure_media_user_dirs(userid_t userid); /* commands.c */ int install(const char *pkgname, uid_t uid, gid_t gid, bool restrictHomeDirectory); int install(const char *pkgname, uid_t uid, gid_t gid); int uninstall(const char *pkgname, uid_t persona); int renamepkg(const char *oldpkgname, const char *newpkgname); int fix_uid(const char *pkgname, uid_t uid, gid_t gid); int delete_user_data(const char *pkgname, uid_t persona); int make_user_data(const char *pkgname, uid_t uid, uid_t persona, bool restrictHomeDirectory); int make_user_data(const char *pkgname, uid_t uid, uid_t persona); int delete_persona(uid_t persona); int delete_cache(const char *pkgname, uid_t persona); int move_dex(const char *src, const char *dst); Loading