Lines Matching refs:box
84 struct ssh_sandbox *box;
87 box = xcalloc(1, sizeof(*box));
88 box->systrace_fd = -1;
89 box->child_pid = 0;
90 box->osigchld = signal(SIGCHLD, SIG_IGN);
92 return box;
96 ssh_sandbox_child(struct ssh_sandbox *box)
99 signal(SIGCHLD, box->osigchld);
106 ssh_sandbox_parent(struct ssh_sandbox *box, pid_t child_pid,
118 signal(SIGCHLD, box->osigchld);
129 box->child_pid = child_pid;
135 if (ioctl(dev_systrace, STRIOCCLONE, &box->systrace_fd) == -1)
139 debug3("%s: systrace attach, fd=%d", __func__, box->systrace_fd);
140 if (ioctl(box->systrace_fd, STRIOCATTACH, &child_pid) == -1)
142 box->systrace_fd, child_pid, strerror(errno));
148 if (ioctl(box->systrace_fd, STRIOCPOLICY, &policy) == -1)
150 box->systrace_fd, strerror(errno));
153 policy.strp_pid = box->child_pid;
154 if (ioctl(box->systrace_fd, STRIOCPOLICY, &policy) == -1)
156 __func__, box->systrace_fd, strerror(errno));
173 if (ioctl(box->systrace_fd, STRIOCPOLICY, &policy) == -1)
175 __func__, box->systrace_fd, strerror(errno));
180 if (kill(box->child_pid, SIGCONT) != 0)
181 fatal("%s: kill(%d, SIGCONT)", __func__, box->child_pid);
185 ssh_sandbox_parent_finish(struct ssh_sandbox *box)
188 close(box->systrace_fd);
190 free(box);
195 ssh_sandbox_parent_preauth(struct ssh_sandbox *box, pid_t child_pid)
197 ssh_sandbox_parent(box, child_pid, preauth_policy);