diff --git a/manager/app/src/main/cpp/ksu.cc b/manager/app/src/main/cpp/ksu.cc index f743ff29..54c942c7 100644 --- a/manager/app/src/main/cpp/ksu.cc +++ b/manager/app/src/main/cpp/ksu.cc @@ -6,6 +6,7 @@ #include #include #include +#include #include "ksu.h" @@ -29,7 +30,14 @@ static bool ksuctl(int cmd, void* arg1, void* arg2) { bool become_manager(const char* pkg) { char param[128]; - sprintf(param, "/data/data/%s", pkg); + uid_t uid = getuid(); + uint32_t userId = uid / 100000; + if (userId == 0) { + sprintf(param, "/data/data/%s", pkg); + } else { + snprintf(param, 10, "/data/user/%d/%s", userId, pkg); + } + return ksuctl(CMD_BECOME_MANAGER, param, nullptr); }