//Start child process
pipe.post();
-
- int status;
- wait(&status);
+ waitPid(pid);
tmpUser.remove();
} else { //child process
//Start child
pipe.post();
-
- int status;
- wait(&status);
+ waitPid(pid);
for (auto &user : users)
user.remove();
//Start child process
pipe.post();
-
- //Wait for child to finish
- int status;
- wait(&status);
+ waitPid(pid);
for (auto &user : users)
user.remove();
//check_app_after_install(MANY_APPS[i].c_str(), MANY_APPS_PKGS[i].c_str());
};
- int status;
//Start child #1
sync[0].post();
-
- //Wait until child #1 finishes
- pid_t ret = wait(&status);
- RUNNER_ASSERT_MSG((ret != -1) && WIFEXITED(status), "Updating privileges failed");
+ waitPid(pid[0]);
//Start child #2
sync[1].post();
-
- //Wait until child #2 finishes
- ret = wait(&status);
- RUNNER_ASSERT_MSG((ret =-1) && WIFEXITED(status), "Listing privileges failed");
+ waitPid(pid[1]);
for (auto &user : users)
user.remove();
//Start child process
pipe.post();
-
- int status;
- //Wait for child process to finish
- wait(&status);
+ waitPid(pid);
//switch back to root
for (auto &user : users)
ssize_t written = TEMP_FAILURE_RETRY(write(pipefd[1], &msg, sizeof(struct message)));
RUNNER_ASSERT_MSG((written == sizeof(struct message)),"write failed");
- //wait for child
- RUNNER_ASSERT_MSG(wait(&result) == pid, "wait failed");
+ waitPid(pid);
admin.adminCheck(check_start_bucket, false, generateAppLabel(update_app_id).c_str(),
std::to_string(static_cast<int>(msg.uid)).c_str(), update_privilege, CYNARA_ADMIN_ALLOW, nullptr);
ssize_t written = TEMP_FAILURE_RETRY(write(pipefd[1], &msg, sizeof(struct message)));
RUNNER_ASSERT_MSG((written == sizeof(struct message)),"write failed");
- //wait for child
- RUNNER_ASSERT_MSG(wait(&result) == pid, "wait failed");
+ waitPid(pid);
admin.adminCheck(check_start_bucket, false, generateAppLabel(update_other_app_id).c_str(),
std::to_string(static_cast<int>(msg.uid)).c_str(), update_privilege, CYNARA_ADMIN_ALLOW, nullptr);
ssize_t written = TEMP_FAILURE_RETRY(write(pipefd[1], &msg, sizeof(struct message)));
RUNNER_ASSERT_MSG((written == sizeof(struct message)),"write failed");
- //wait for child
- RUNNER_ASSERT_MSG(wait(&result) == pid, "wait failed");
+ waitPid(pid);
admin.adminCheck(check_start_bucket, false, generateAppLabel(update_app_id).c_str(),
std::to_string(static_cast<int>(msg.uid)).c_str(), update_privilege, CYNARA_ADMIN_ALLOW, nullptr);
ssize_t written = TEMP_FAILURE_RETRY(write(pipefd[1], &msg, sizeof(struct message)));
RUNNER_ASSERT_MSG((written == sizeof(struct message)),"write failed");
- //wait for child
- RUNNER_ASSERT_MSG(wait(&result) == pid, "wait failed");
+ waitPid(pid);
}
if(pid == 0)
{
int pipefd[2];
int pipefd2[2];
- pid_t pid;
+ pid_t pid[2];
int result = 0;
ScopedProcessLabel keepLabel;
TemporaryTestUser user(username, GUM_USERTYPE_NORMAL, false);
user.create();
- pid = fork();
- RUNNER_ASSERT_MSG(pid >= 0, "fork failed");
- if (pid != 0)//parent process
+ pid[0] = fork();
+ RUNNER_ASSERT_MSG(pid[0] >= 0, "fork failed");
+ if (pid[0] != 0)//parent process
{
FdUniquePtr pipeptr(pipefd+1);
close(pipefd[0]);
ssize_t written = TEMP_FAILURE_RETRY(write(pipefd[1], &msg, sizeof(struct message)));
RUNNER_ASSERT_MSG((written == sizeof(struct message)),"write failed");
- //wait for child
- RUNNER_ASSERT_MSG(wait(&result) == pid, "wait failed");
+ waitPid(pid[0]);
admin.adminCheck(check_start_bucket, false, generateAppLabel(update_app_id).c_str(),
std::to_string(static_cast<int>(msg.uid)).c_str(), update_privilege, CYNARA_ADMIN_ALLOW, nullptr);
- pid = fork();
- if (pid != 0)//parent process
+ pid[1] = fork();
+ if (pid[1] != 0)//parent process
{
FdUniquePtr pipeptr(pipefd2+1);
close(pipefd2[0]);
ssize_t written = TEMP_FAILURE_RETRY(write(pipefd2[1], &msg, sizeof(struct message)));
RUNNER_ASSERT_MSG((written == sizeof(struct message)),"write failed");
- //wait for child
- RUNNER_ASSERT_MSG(wait(&result) == pid, "wait failed");
-
- //wait for child
- waitpid(-1, &result, 0);
+ waitPid(pid[1]);
admin.adminCheck(check_start_bucket, false, generateAppLabel(update_app_id).c_str(),
std::to_string(static_cast<int>(msg.uid)).c_str(), update_privilege, CYNARA_ADMIN_DENY, nullptr);
}
- if(pid == 0)
+ if(pid[1] == 0)
{
FdUniquePtr pipeptr(pipefd2);
close(pipefd2[1]);
exit(0);
}
}
- if(pid == 0)
+ if(pid[0] == 0)
{
FdUniquePtr pipeptr(pipefd);
close(pipefd[1]);
ssize_t written = TEMP_FAILURE_RETRY(write(pipefd[1], &msg, sizeof(struct message)));
RUNNER_ASSERT_MSG((written == sizeof(struct message)),"write failed");
- //wait for child
- RUNNER_ASSERT_MSG(wait(&result) == pid, "wait failed");
+ waitPid(pid);
}
if(pid == 0)
{
ssize_t written = TEMP_FAILURE_RETRY(write(pipefd[1], &msg, sizeof(struct message)));
RUNNER_ASSERT_MSG((written == sizeof(struct message)),"write failed");
- //wait for child
- RUNNER_ASSERT_MSG(wait(&result) == pid, "wait failed");
+ waitPid(pid);
check_app_permissions(app_id.c_str(), pkg_id.c_str(), childuidstr.c_str(),
real_privs_allow, real_privs_deny);