Changeset View
Changeset View
Standalone View
Standalone View
contrib/capsicum-test/capmode.cc
| Show First 20 Lines • Show All 588 Lines • ▼ Show 20 Lines | if (pid == 0) { | ||||
| SEND_INT_MESSAGE(pipefds[1], MSG_CHILD_STARTED); | SEND_INT_MESSAGE(pipefds[1], MSG_CHILD_STARTED); | ||||
| AWAIT_INT_MESSAGE(pipefds[1], MSG_PARENT_REQUEST_CHILD_EXIT); | AWAIT_INT_MESSAGE(pipefds[1], MSG_PARENT_REQUEST_CHILD_EXIT); | ||||
| exit(0); | exit(0); | ||||
| } else if (pid > 0) { | } else if (pid > 0) { | ||||
| EXPECT_OK(close(pipefds[1])); | EXPECT_OK(close(pipefds[1])); | ||||
| AWAIT_INT_MESSAGE(pipefds[0], MSG_CHILD_STARTED); | AWAIT_INT_MESSAGE(pipefds[0], MSG_CHILD_STARTED); | ||||
| errno = 0; | errno = 0; | ||||
| EXPECT_CAPMODE(ptrace_(PTRACE_PEEKDATA_, pid, &pid, NULL)); | EXPECT_CAPMODE(ptrace_(PTRACE_PEEKDATA_, pid, &pid, NULL)); | ||||
| EXPECT_CAPMODE(waitpid(pid, NULL, WNOHANG)); | |||||
| SEND_INT_MESSAGE(pipefds[0], MSG_PARENT_REQUEST_CHILD_EXIT); | SEND_INT_MESSAGE(pipefds[0], MSG_PARENT_REQUEST_CHILD_EXIT); | ||||
| if (verbose) fprintf(stderr, " child finished\n"); | if (verbose) fprintf(stderr, " child finished\n"); | ||||
| } | } | ||||
| // No error return from sync(2) to test, but check errno remains unset. | // No error return from sync(2) to test, but check errno remains unset. | ||||
| errno = 0; | errno = 0; | ||||
| sync(); | sync(); | ||||
| EXPECT_EQ(0, errno); | EXPECT_EQ(0, errno); | ||||
| ▲ Show 20 Lines • Show All 167 Lines • Show Last 20 Lines | |||||