Merge "Merge "Set idmap2 binary uid and gid after forking" into qt-dev am: ebad9125c8" into qt-dev-plus-aosp

This commit is contained in:
Android Build Merger (Role)
2019-07-02 17:33:23 +00:00
committed by Android (Google) Code Review

View File

@@ -64,6 +64,9 @@ std::unique_ptr<ProcResult> ExecuteBinary(const std::vector<std::string>& argv)
return nullptr; return nullptr;
} }
auto gid = getgid();
auto uid = getuid();
char const** argv0 = (char const**)malloc(sizeof(char*) * (argv.size() + 1)); char const** argv0 = (char const**)malloc(sizeof(char*) * (argv.size() + 1));
for (size_t i = 0; i < argv.size(); i++) { for (size_t i = 0; i < argv.size(); i++) {
argv0[i] = argv[i].c_str(); argv0[i] = argv[i].c_str();
@@ -75,6 +78,16 @@ std::unique_ptr<ProcResult> ExecuteBinary(const std::vector<std::string>& argv)
PLOG(ERROR) << "fork"; PLOG(ERROR) << "fork";
return nullptr; return nullptr;
case 0: // child case 0: // child
if (setgid(gid) != 0) {
PLOG(ERROR) << "setgid";
exit(1);
}
if (setuid(uid) != 0) {
PLOG(ERROR) << "setuid";
exit(1);
}
close(stdout[0]); close(stdout[0]);
if (dup2(stdout[1], STDOUT_FILENO) == -1) { if (dup2(stdout[1], STDOUT_FILENO) == -1) {
abort(); abort();