Lines Matching refs:self

1045 	memset(&self->prog, 0, sizeof(self->prog));
1046 self->prog.filter = malloc(sizeof(filter));
1047 ASSERT_NE(NULL, self->prog.filter);
1048 memcpy(self->prog.filter, filter, sizeof(filter));
1049 self->prog.len = (unsigned short)ARRAY_SIZE(filter);
1054 if (self->prog.filter)
1055 free(self->prog.filter);
1065 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->prog);
1080 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->prog);
1116 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->prog);
1192 memset(self, 0, sizeof(*self));
1194 self->_x.filter = malloc(sizeof(_x##_insns)); \
1195 ASSERT_NE(NULL, self->_x.filter); \
1196 memcpy(self->_x.filter, &_x##_insns, sizeof(_x##_insns)); \
1197 self->_x.len = (unsigned short)ARRAY_SIZE(_x##_insns)
1208 #define FILTER_FREE(_x) if (self->_x.filter) free(self->_x.filter)
1226 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->allow);
1228 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->log);
1230 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trace);
1232 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->error);
1234 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trap);
1236 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->kill);
1252 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->allow);
1254 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->log);
1256 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trace);
1258 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->error);
1260 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trap);
1262 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->kill);
1281 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->allow);
1283 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->kill);
1285 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->error);
1287 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->log);
1289 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trace);
1291 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trap);
1308 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->allow);
1310 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->log);
1312 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trace);
1314 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->error);
1316 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trap);
1333 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->allow);
1335 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trap);
1337 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->log);
1339 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trace);
1341 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->error);
1358 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->allow);
1360 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->log);
1362 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trace);
1364 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->error);
1380 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->log);
1382 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->error);
1384 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trace);
1386 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->allow);
1402 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->allow);
1404 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->log);
1406 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trace);
1423 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->trace);
1425 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->allow);
1427 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->log);
1445 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->allow);
1447 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->log);
1465 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->log);
1467 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->allow);
1649 self->poked = 0;
1650 memset(&self->prog, 0, sizeof(self->prog));
1651 self->prog.filter = malloc(sizeof(filter));
1652 ASSERT_NE(NULL, self->prog.filter);
1653 memcpy(self->prog.filter, filter, sizeof(filter));
1654 self->prog.len = (unsigned short)ARRAY_SIZE(filter);
1657 self->tracer_args.poke_addr = (unsigned long)&self->poked;
1660 self->tracer = setup_trace_fixture(_metadata, tracer_poke,
1661 &self->tracer_args, false);
1666 teardown_trace_fixture(_metadata, self->tracer);
1667 if (self->prog.filter)
1668 free(self->prog.filter);
1678 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->prog, 0, 0);
1681 EXPECT_EQ(0, self->poked);
1684 EXPECT_EQ(0x1001, self->poked);
1694 ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &self->prog, 0, 0);
1697 EXPECT_EQ(0, self->poked);
1699 EXPECT_EQ(0, self->poked);
2014 FIXTURE_DATA(TRACE_syscall) *self = args;
2036 self->syscall_nr = get_syscall(_metadata, tracee);
2048 switch (self->syscall_nr) {
2110 self->mytid = syscall(__NR_gettid);
2111 ASSERT_GT(self->mytid, 0);
2112 ASSERT_NE(self->mytid, 1) {
2116 self->mypid = getpid();
2117 ASSERT_GT(self->mypid, 0);
2118 ASSERT_EQ(self->mytid, self->mypid);
2120 self->parent = getppid();
2121 ASSERT_GT(self->parent, 0);
2122 ASSERT_NE(self->parent, self->mypid);
2125 self->tracer = setup_trace_fixture(_metadata,
2128 self, variant->use_ptrace);
2142 teardown_trace_fixture(_metadata, self->tracer);
2168 EXPECT_EQ(self->parent, syscall(__NR_getppid));
2169 EXPECT_NE(self->mypid, syscall(__NR_getppid));
2175 EXPECT_EQ(self->parent, syscall(__NR_getpid));
2176 EXPECT_NE(self->mypid, syscall(__NR_getpid));
2236 EXPECT_NE(self->mypid, syscall(__NR_getpid));
2496 memset(&self->root_prog, 0, sizeof(self->root_prog));
2497 memset(&self->apply_prog, 0, sizeof(self->apply_prog));
2498 memset(&self->sibling, 0, sizeof(self->sibling));
2499 self->root_prog.filter = malloc(sizeof(root_filter));
2500 ASSERT_NE(NULL, self->root_prog.filter);
2501 memcpy(self->root_prog.filter, &root_filter, sizeof(root_filter));
2502 self->root_prog.len = (unsigned short)ARRAY_SIZE(root_filter);
2504 self->apply_prog.filter = malloc(sizeof(apply_filter));
2505 ASSERT_NE(NULL, self->apply_prog.filter);
2506 memcpy(self->apply_prog.filter, &apply_filter, sizeof(apply_filter));
2507 self->apply_prog.len = (unsigned short)ARRAY_SIZE(apply_filter);
2509 self->sibling_count = 0;
2510 pthread_mutex_init(&self->mutex, NULL);
2511 pthread_cond_init(&self->cond, NULL);
2512 sem_init(&self->started, 0, 0);
2513 self->sibling[0].tid = 0;
2514 self->sibling[0].cond = &self->cond;
2515 self->sibling[0].started = &self->started;
2516 self->sibling[0].mutex = &self->mutex;
2517 self->sibling[0].diverge = 0;
2518 self->sibling[0].num_waits = 1;
2519 self->sibling[0].prog = &self->root_prog;
2520 self->sibling[0].metadata = _metadata;
2521 self->sibling[1].tid = 0;
2522 self->sibling[1].cond = &self->cond;
2523 self->sibling[1].started = &self->started;
2524 self->sibling[1].mutex = &self->mutex;
2525 self->sibling[1].diverge = 0;
2526 self->sibling[1].prog = &self->root_prog;
2527 self->sibling[1].num_waits = 1;
2528 self->sibling[1].metadata = _metadata;
2535 if (self->root_prog.filter)
2536 free(self->root_prog.filter);
2537 if (self->apply_prog.filter)
2538 free(self->apply_prog.filter);
2540 for ( ; sib < self->sibling_count; ++sib) {
2541 struct tsync_sibling *s = &self->sibling[sib];
2551 pthread_mutex_destroy(&self->mutex);
2552 pthread_cond_destroy(&self->cond);
2553 sem_destroy(&self->started);
2622 self->sibling[0].diverge = 1;
2623 tsync_start_sibling(&self->sibling[0]);
2624 tsync_start_sibling(&self->sibling[1]);
2626 while (self->sibling_count < TSYNC_SIBLINGS) {
2627 sem_wait(&self->started);
2628 self->sibling_count++;
2632 pthread_mutex_lock(&self->mutex);
2633 ASSERT_EQ(0, pthread_cond_broadcast(&self->cond)) {
2636 pthread_mutex_unlock(&self->mutex);
2639 PTHREAD_JOIN(self->sibling[0].tid, &status);
2641 PTHREAD_JOIN(self->sibling[1].tid, &status);
2654 ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &self->root_prog);
2661 tsync_start_sibling(&self->sibling[0]);
2662 tsync_start_sibling(&self->sibling[1]);
2664 while (self->sibling_count < TSYNC_SIBLINGS) {
2665 sem_wait(&self->started);
2666 self->sibling_count++;
2670 &self->apply_prog);
2675 pthread_mutex_lock(&self->mutex);
2676 ASSERT_EQ(0, pthread_cond_broadcast(&self->cond)) {
2679 pthread_mutex_unlock(&self->mutex);
2681 PTHREAD_JOIN(self->sibling[0].tid, &status);
2683 PTHREAD_JOIN(self->sibling[1].tid, &status);
2692 tsync_start_sibling(&self->sibling[0]);
2693 tsync_start_sibling(&self->sibling[1]);
2694 while (self->sibling_count < TSYNC_SIBLINGS) {
2695 sem_wait(&self->started);
2696 self->sibling_count++;
2700 pthread_mutex_lock(&self->mutex);
2701 ASSERT_EQ(0, pthread_cond_broadcast(&self->cond)) {
2704 pthread_mutex_unlock(&self->mutex);
2707 PTHREAD_JOIN(self->sibling[0].tid, &status);
2709 PTHREAD_JOIN(self->sibling[1].tid, &status);
2719 tsync_start_sibling(&self->sibling[0]);
2720 tsync_start_sibling(&self->sibling[1]);
2721 while (self->sibling_count < TSYNC_SIBLINGS) {
2722 sem_wait(&self->started);
2723 self->sibling_count++;
2731 &self->apply_prog);
2740 pthread_mutex_lock(&self->mutex);
2741 ASSERT_EQ(0, pthread_cond_broadcast(&self->cond)) {
2744 pthread_mutex_unlock(&self->mutex);
2747 PTHREAD_JOIN(self->sibling[0].tid, &status);
2749 PTHREAD_JOIN(self->sibling[1].tid, &status);
2762 ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &self->root_prog);
2769 self->sibling[0].diverge = 1;
2770 tsync_start_sibling(&self->sibling[0]);
2771 tsync_start_sibling(&self->sibling[1]);
2773 while (self->sibling_count < TSYNC_SIBLINGS) {
2774 sem_wait(&self->started);
2775 self->sibling_count++;
2779 &self->apply_prog);
2780 ASSERT_EQ(self->sibling[0].system_tid, ret) {
2785 pthread_mutex_lock(&self->mutex);
2786 ASSERT_EQ(0, pthread_cond_broadcast(&self->cond)) {
2789 pthread_mutex_unlock(&self->mutex);
2792 PTHREAD_JOIN(self->sibling[0].tid, &status);
2794 PTHREAD_JOIN(self->sibling[1].tid, &status);
2807 ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &self->root_prog);
2814 self->sibling[0].diverge = 1;
2815 tsync_start_sibling(&self->sibling[0]);
2816 tsync_start_sibling(&self->sibling[1]);
2818 while (self->sibling_count < TSYNC_SIBLINGS) {
2819 sem_wait(&self->started);
2820 self->sibling_count++;
2825 ret = seccomp(SECCOMP_SET_MODE_FILTER, flags, &self->apply_prog);
2834 pthread_mutex_lock(&self->mutex);
2835 ASSERT_EQ(0, pthread_cond_broadcast(&self->cond)) {
2838 pthread_mutex_unlock(&self->mutex);
2841 PTHREAD_JOIN(self->sibling[0].tid, &status);
2843 PTHREAD_JOIN(self->sibling[1].tid, &status);
2863 self->sibling[0].diverge = 1;
2864 tsync_start_sibling(&self->sibling[0]);
2865 tsync_start_sibling(&self->sibling[1]);
2867 while (self->sibling_count < TSYNC_SIBLINGS) {
2868 sem_wait(&self->started);
2869 self->sibling_count++;
2872 ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &self->root_prog);
2881 &self->apply_prog);
2882 ASSERT_EQ(ret, self->sibling[0].system_tid) {
2886 if (ret == self->sibling[0].system_tid)
2889 pthread_mutex_lock(&self->mutex);
2894 self->sibling[!sib].num_waits += 1;
2897 ASSERT_EQ(0, pthread_cond_broadcast(&self->cond)) {
2900 pthread_mutex_unlock(&self->mutex);
2901 PTHREAD_JOIN(self->sibling[sib].tid, &status);
2904 while (!kill(self->sibling[sib].system_tid, 0))
2910 &self->apply_prog);
2915 pthread_mutex_lock(&self->mutex);
2920 if (self->sibling[sib].num_waits > 1)
2921 self->sibling[sib].num_waits = 1;
2922 ASSERT_EQ(0, pthread_cond_broadcast(&self->cond)) {
2925 pthread_mutex_unlock(&self->mutex);
2926 PTHREAD_JOIN(self->sibling[sib].tid, &status);
2929 while (!kill(self->sibling[sib].system_tid, 0))
2933 &self->apply_prog);
3765 pid_t self;
3773 self = getpid();
3774 ASSERT_EQ(filecmp(self, self, pipe_fds[0], dup_fd), 0);