summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorprovos <provos@openbsd.org>2002-07-11 12:57:41 +0000
committerprovos <provos@openbsd.org>2002-07-11 12:57:41 +0000
commita4e12e2e450423b72474ef5cd13132e6ef4fe10d (patch)
treec7ef8ed6cd39acb5af82fc676111f24bdff08455
parentKNF. (diff)
downloadwireguard-openbsd-a4e12e2e450423b72474ef5cd13132e6ef4fe10d.tar.xz
wireguard-openbsd-a4e12e2e450423b72474ef5cd13132e6ef4fe10d.zip
cleanup
-rw-r--r--bin/systrace/Makefile4
-rw-r--r--bin/systrace/register.c182
-rw-r--r--bin/systrace/systrace.c139
-rw-r--r--bin/systrace/systrace.h3
4 files changed, 187 insertions, 141 deletions
diff --git a/bin/systrace/Makefile b/bin/systrace/Makefile
index bbe3c64447b..e05584702a0 100644
--- a/bin/systrace/Makefile
+++ b/bin/systrace/Makefile
@@ -1,11 +1,11 @@
-# $OpenBSD: Makefile,v 1.5 2002/07/09 15:22:27 provos Exp $
+# $OpenBSD: Makefile,v 1.6 2002/07/11 12:57:41 provos Exp $
PROG= systrace
CFLAGS+= -I.
SRCS= filter.c intercept-translate.c intercept.c \
openbsd-syscalls.c util.c \
policy.c systrace-errno.h systrace-error.c \
- systrace-translate.c systrace.c alias.c \
+ systrace-translate.c systrace.c alias.c register.c \
parse.y lex.l
CLEANFILES+= parse.c lex.c y.tab.h
diff --git a/bin/systrace/register.c b/bin/systrace/register.c
new file mode 100644
index 00000000000..6071bc5cdc6
--- /dev/null
+++ b/bin/systrace/register.c
@@ -0,0 +1,182 @@
+/* $OpenBSD: register.c,v 1.1 2002/07/11 12:57:41 provos Exp $ */
+/*
+ * Copyright 2002 Niels Provos <provos@citi.umich.edu>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Niels Provos.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/tree.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <err.h>
+
+#include "intercept.h"
+#include "systrace.h"
+
+#define X(x) if ((x) == -1) \
+ err(1, "%s:%d: intercept failed", __func__, __LINE__)
+
+extern short trans_cb(int, pid_t, int, char *, int, char *, void *, int,
+ struct intercept_tlq *, void *);
+extern short gen_cb(int, pid_t, int, char *, int, char *, void *, int,
+ void *);
+extern void execres_cb(int, pid_t, int, char *, char *, void *);
+
+void
+systrace_initcb(void)
+{
+ struct systrace_alias *alias;
+ struct intercept_translate *tl;
+
+ X(intercept_init());
+
+ X(intercept_register_gencb(gen_cb, NULL));
+ X(intercept_register_sccb("native", "open", trans_cb, NULL));
+ tl = intercept_register_transfn("native", "open", 0);
+ intercept_register_translation("native", "open", 1, &oflags);
+ alias = systrace_new_alias("native", "open", "native", "fswrite");
+ systrace_alias_add_trans(alias, tl);
+
+ X(intercept_register_sccb("native", "connect", trans_cb, NULL));
+ intercept_register_translation("native", "connect", 1,
+ &ic_translate_connect);
+ X(intercept_register_sccb("native", "sendto", trans_cb, NULL));
+ intercept_register_translation("native", "sendto", 4,
+ &ic_translate_connect);
+ X(intercept_register_sccb("native", "bind", trans_cb, NULL));
+ intercept_register_translation("native", "bind", 1,
+ &ic_translate_connect);
+ X(intercept_register_sccb("native", "execve", trans_cb, NULL));
+ intercept_register_transfn("native", "execve", 0);
+ X(intercept_register_sccb("native", "stat", trans_cb, NULL));
+ tl = intercept_register_transfn("native", "stat", 0);
+ alias = systrace_new_alias("native", "stat", "native", "fsread");
+ systrace_alias_add_trans(alias, tl);
+
+ X(intercept_register_sccb("native", "lstat", trans_cb, NULL));
+ tl = intercept_register_translink("native", "lstat", 0);
+ alias = systrace_new_alias("native", "lstat", "native", "fsread");
+ systrace_alias_add_trans(alias, tl);
+
+ X(intercept_register_sccb("native", "unlink", trans_cb, NULL));
+ tl = intercept_register_transfn("native", "unlink", 0);
+ alias = systrace_new_alias("native", "unlink", "native", "fswrite");
+ systrace_alias_add_trans(alias, tl);
+
+ X(intercept_register_sccb("native", "chown", trans_cb, NULL));
+ intercept_register_transfn("native", "chown", 0);
+ intercept_register_translation("native", "chown", 1, &uidt);
+ intercept_register_translation("native", "chown", 2, &gidt);
+ X(intercept_register_sccb("native", "fchown", trans_cb, NULL));
+ intercept_register_translation("native", "fchown", 0, &fdt);
+ intercept_register_translation("native", "fchown", 1, &uidt);
+ intercept_register_translation("native", "fchown", 2, &gidt);
+ X(intercept_register_sccb("native", "chmod", trans_cb, NULL));
+ intercept_register_transfn("native", "chmod", 0);
+ intercept_register_translation("native", "chmod", 1, &modeflags);
+ X(intercept_register_sccb("native", "fchmod", trans_cb, NULL));
+ intercept_register_translation("native", "fchmod", 0, &fdt);
+ intercept_register_translation("native", "fchmod", 1, &modeflags);
+ X(intercept_register_sccb("native", "readlink", trans_cb, NULL));
+ tl = intercept_register_translink("native", "readlink", 0);
+ alias = systrace_new_alias("native", "readlink", "native", "fsread");
+ systrace_alias_add_trans(alias, tl);
+
+ X(intercept_register_sccb("native", "chdir", trans_cb, NULL));
+ intercept_register_transfn("native", "chdir", 0);
+ X(intercept_register_sccb("native", "access", trans_cb, NULL));
+ tl = intercept_register_transfn("native", "access", 0);
+ alias = systrace_new_alias("native", "access", "native", "fsread");
+ systrace_alias_add_trans(alias, tl);
+
+ X(intercept_register_sccb("native", "mkdir", trans_cb, NULL));
+ tl = intercept_register_transfn("native", "mkdir", 0);
+ alias = systrace_new_alias("native", "mkdir", "native", "fswrite");
+ systrace_alias_add_trans(alias, tl);
+ X(intercept_register_sccb("native", "rmdir", trans_cb, NULL));
+ tl = intercept_register_transfn("native", "rmdir", 0);
+ alias = systrace_new_alias("native", "rmdir", "native", "fswrite");
+ systrace_alias_add_trans(alias, tl);
+
+ X(intercept_register_sccb("native", "rename", trans_cb, NULL));
+ intercept_register_transfn("native", "rename", 0);
+ intercept_register_transfn("native", "rename", 1);
+ X(intercept_register_sccb("native", "symlink", trans_cb, NULL));
+ intercept_register_transstring("native", "symlink", 0);
+ intercept_register_translink("native", "symlink", 1);
+
+ X(intercept_register_sccb("linux", "open", trans_cb, NULL));
+ tl = intercept_register_translink("linux", "open", 0);
+ intercept_register_translation("linux", "open", 1, &linux_oflags);
+ alias = systrace_new_alias("linux", "open", "linux", "fswrite");
+ systrace_alias_add_trans(alias, tl);
+
+ X(intercept_register_sccb("linux", "stat", trans_cb, NULL));
+ tl = intercept_register_translink("linux", "stat", 0);
+ alias = systrace_new_alias("linux", "stat", "linux", "fsread");
+ systrace_alias_add_trans(alias, tl);
+ X(intercept_register_sccb("linux", "lstat", trans_cb, NULL));
+ tl = intercept_register_translink("linux", "lstat", 0);
+ alias = systrace_new_alias("linux", "lstat", "linux", "fsread");
+ systrace_alias_add_trans(alias, tl);
+ X(intercept_register_sccb("linux", "execve", trans_cb, NULL));
+ intercept_register_translink("linux", "execve", 0);
+ X(intercept_register_sccb("linux", "access", trans_cb, NULL));
+ tl = intercept_register_translink("linux", "access", 0);
+ alias = systrace_new_alias("linux", "access", "linux", "fsread");
+ systrace_alias_add_trans(alias, tl);
+ X(intercept_register_sccb("linux", "symlink", trans_cb, NULL));
+ intercept_register_transstring("linux", "symlink", 0);
+ intercept_register_translink("linux", "symlink", 1);
+ X(intercept_register_sccb("linux", "readlink", trans_cb, NULL));
+ tl = intercept_register_translink("linux", "readlink", 0);
+ alias = systrace_new_alias("linux", "readlink", "linux", "fsread");
+ systrace_alias_add_trans(alias, tl);
+ X(intercept_register_sccb("linux", "rename", trans_cb, NULL));
+ intercept_register_translink("linux", "rename", 0);
+ intercept_register_translink("linux", "rename", 1);
+ X(intercept_register_sccb("linux", "mkdir", trans_cb, NULL));
+ tl = intercept_register_translink("linux", "mkdir", 0);
+ alias = systrace_new_alias("linux", "mkdir", "linux", "fswrite");
+ systrace_alias_add_trans(alias, tl);
+ X(intercept_register_sccb("linux", "rmdir", trans_cb, NULL));
+ tl = intercept_register_translink("linux", "rmdir", 0);
+ alias = systrace_new_alias("linux", "rmdir", "linux", "fswrite");
+ systrace_alias_add_trans(alias, tl);
+ X(intercept_register_sccb("linux", "unlink", trans_cb, NULL));
+ tl = intercept_register_translink("linux", "unlink", 0);
+ alias = systrace_new_alias("linux", "unlink", "linux", "fswrite");
+ systrace_alias_add_trans(alias, tl);
+ X(intercept_register_sccb("linux", "chmod", trans_cb, NULL));
+ intercept_register_translink("linux", "chmod", 0);
+ intercept_register_translation("linux", "chmod", 1, &modeflags);
+
+ X(intercept_register_execcb(execres_cb, NULL));
+}
diff --git a/bin/systrace/systrace.c b/bin/systrace/systrace.c
index a80944e1733..779db20916e 100644
--- a/bin/systrace/systrace.c
+++ b/bin/systrace/systrace.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: systrace.c,v 1.24 2002/07/10 07:05:38 provos Exp $ */
+/* $OpenBSD: systrace.c,v 1.25 2002/07/11 12:57:41 provos Exp $ */
/*
* Copyright 2002 Niels Provos <provos@citi.umich.edu>
* All rights reserved.
@@ -316,141 +316,6 @@ child_handler(int sig)
errno = s;
}
-#define X(x) if ((x) == -1) \
- err(1, "%s:%d: intercept failed", __func__, __LINE__)
-
-void
-systrace_initcb(void)
-{
- struct systrace_alias *alias;
- struct intercept_translate *tl;
-
- X(intercept_init());
-
- X(intercept_register_gencb(gen_cb, NULL));
- X(intercept_register_sccb("native", "open", trans_cb, NULL));
- tl = intercept_register_transfn("native", "open", 0);
- intercept_register_translation("native", "open", 1, &oflags);
- alias = systrace_new_alias("native", "open", "native", "fswrite");
- systrace_alias_add_trans(alias, tl);
-
- X(intercept_register_sccb("native", "connect", trans_cb, NULL));
- intercept_register_translation("native", "connect", 1,
- &ic_translate_connect);
- X(intercept_register_sccb("native", "sendto", trans_cb, NULL));
- intercept_register_translation("native", "sendto", 4,
- &ic_translate_connect);
- X(intercept_register_sccb("native", "bind", trans_cb, NULL));
- intercept_register_translation("native", "bind", 1,
- &ic_translate_connect);
- X(intercept_register_sccb("native", "execve", trans_cb, NULL));
- intercept_register_transfn("native", "execve", 0);
- X(intercept_register_sccb("native", "stat", trans_cb, NULL));
- tl = intercept_register_transfn("native", "stat", 0);
- alias = systrace_new_alias("native", "stat", "native", "fsread");
- systrace_alias_add_trans(alias, tl);
-
- X(intercept_register_sccb("native", "lstat", trans_cb, NULL));
- tl = intercept_register_translink("native", "lstat", 0);
- alias = systrace_new_alias("native", "lstat", "native", "fsread");
- systrace_alias_add_trans(alias, tl);
-
- X(intercept_register_sccb("native", "unlink", trans_cb, NULL));
- tl = intercept_register_transfn("native", "unlink", 0);
- alias = systrace_new_alias("native", "unlink", "native", "fswrite");
- systrace_alias_add_trans(alias, tl);
-
- X(intercept_register_sccb("native", "chown", trans_cb, NULL));
- intercept_register_transfn("native", "chown", 0);
- intercept_register_translation("native", "chown", 1, &uidt);
- intercept_register_translation("native", "chown", 2, &gidt);
- X(intercept_register_sccb("native", "fchown", trans_cb, NULL));
- intercept_register_translation("native", "fchown", 0, &fdt);
- intercept_register_translation("native", "fchown", 1, &uidt);
- intercept_register_translation("native", "fchown", 2, &gidt);
- X(intercept_register_sccb("native", "chmod", trans_cb, NULL));
- intercept_register_transfn("native", "chmod", 0);
- intercept_register_translation("native", "chmod", 1, &modeflags);
- X(intercept_register_sccb("native", "fchmod", trans_cb, NULL));
- intercept_register_translation("native", "fchmod", 0, &fdt);
- intercept_register_translation("native", "fchmod", 1, &modeflags);
- X(intercept_register_sccb("native", "readlink", trans_cb, NULL));
- tl = intercept_register_translink("native", "readlink", 0);
- alias = systrace_new_alias("native", "readlink", "native", "fsread");
- systrace_alias_add_trans(alias, tl);
-
- X(intercept_register_sccb("native", "chdir", trans_cb, NULL));
- intercept_register_transfn("native", "chdir", 0);
- X(intercept_register_sccb("native", "access", trans_cb, NULL));
- tl = intercept_register_transfn("native", "access", 0);
- alias = systrace_new_alias("native", "access", "native", "fsread");
- systrace_alias_add_trans(alias, tl);
-
- X(intercept_register_sccb("native", "mkdir", trans_cb, NULL));
- tl = intercept_register_transfn("native", "mkdir", 0);
- alias = systrace_new_alias("native", "mkdir", "native", "fswrite");
- systrace_alias_add_trans(alias, tl);
- X(intercept_register_sccb("native", "rmdir", trans_cb, NULL));
- tl = intercept_register_transfn("native", "rmdir", 0);
- alias = systrace_new_alias("native", "rmdir", "native", "fswrite");
- systrace_alias_add_trans(alias, tl);
-
- X(intercept_register_sccb("native", "rename", trans_cb, NULL));
- intercept_register_transfn("native", "rename", 0);
- intercept_register_transfn("native", "rename", 1);
- X(intercept_register_sccb("native", "symlink", trans_cb, NULL));
- intercept_register_transstring("native", "symlink", 0);
- intercept_register_translink("native", "symlink", 1);
-
- X(intercept_register_sccb("linux", "open", trans_cb, NULL));
- tl = intercept_register_translink("linux", "open", 0);
- intercept_register_translation("linux", "open", 1, &linux_oflags);
- alias = systrace_new_alias("linux", "open", "linux", "fswrite");
- systrace_alias_add_trans(alias, tl);
-
- X(intercept_register_sccb("linux", "stat", trans_cb, NULL));
- tl = intercept_register_translink("linux", "stat", 0);
- alias = systrace_new_alias("linux", "stat", "linux", "fsread");
- systrace_alias_add_trans(alias, tl);
- X(intercept_register_sccb("linux", "lstat", trans_cb, NULL));
- tl = intercept_register_translink("linux", "lstat", 0);
- alias = systrace_new_alias("linux", "lstat", "linux", "fsread");
- systrace_alias_add_trans(alias, tl);
- X(intercept_register_sccb("linux", "execve", trans_cb, NULL));
- intercept_register_translink("linux", "execve", 0);
- X(intercept_register_sccb("linux", "access", trans_cb, NULL));
- tl = intercept_register_translink("linux", "access", 0);
- alias = systrace_new_alias("linux", "access", "linux", "fsread");
- systrace_alias_add_trans(alias, tl);
- X(intercept_register_sccb("linux", "symlink", trans_cb, NULL));
- intercept_register_transstring("linux", "symlink", 0);
- intercept_register_translink("linux", "symlink", 1);
- X(intercept_register_sccb("linux", "readlink", trans_cb, NULL));
- tl = intercept_register_translink("linux", "readlink", 0);
- alias = systrace_new_alias("linux", "readlink", "linux", "fsread");
- systrace_alias_add_trans(alias, tl);
- X(intercept_register_sccb("linux", "rename", trans_cb, NULL));
- intercept_register_translink("linux", "rename", 0);
- intercept_register_translink("linux", "rename", 1);
- X(intercept_register_sccb("linux", "mkdir", trans_cb, NULL));
- tl = intercept_register_translink("linux", "mkdir", 0);
- alias = systrace_new_alias("linux", "mkdir", "linux", "fswrite");
- systrace_alias_add_trans(alias, tl);
- X(intercept_register_sccb("linux", "rmdir", trans_cb, NULL));
- tl = intercept_register_translink("linux", "rmdir", 0);
- alias = systrace_new_alias("linux", "rmdir", "linux", "fswrite");
- systrace_alias_add_trans(alias, tl);
- X(intercept_register_sccb("linux", "unlink", trans_cb, NULL));
- tl = intercept_register_translink("linux", "unlink", 0);
- alias = systrace_new_alias("linux", "unlink", "linux", "fswrite");
- systrace_alias_add_trans(alias, tl);
- X(intercept_register_sccb("linux", "chmod", trans_cb, NULL));
- intercept_register_translink("linux", "chmod", 0);
- intercept_register_translation("linux", "chmod", 1, &modeflags);
-
- X(intercept_register_execcb(execres_cb, NULL));
-}
-
void
usage(void)
{
@@ -597,8 +462,6 @@ main(int argc, char **argv)
if (kill(pid, SIGUSR1) == -1)
err(1, "kill");
} else {
- pid_t cpid;
-
/* Attach to a running command */
if (intercept_attachpid(fd, pidattach, argv[0]) == -1)
err(1, "attachpid");
diff --git a/bin/systrace/systrace.h b/bin/systrace/systrace.h
index d8392f5807d..175f84a28c9 100644
--- a/bin/systrace/systrace.h
+++ b/bin/systrace/systrace.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: systrace.h,v 1.6 2002/07/09 15:22:27 provos Exp $ */
+/* $OpenBSD: systrace.h,v 1.7 2002/07/11 12:57:41 provos Exp $ */
/*
* Copyright 2002 Niels Provos <provos@citi.umich.edu>
* All rights reserved.
@@ -99,6 +99,7 @@ struct policy {
#define PROCESS_INHERIT_POLICY 0x01 /* Process inherits policy */
int systrace_initpolicy(char *);
+void systrace_initcb(void);
struct policy *systrace_newpolicy(char *, char *);
int systrace_newpolicynr(int, struct policy *);
int systrace_modifypolicy(int, int, char *, short);