summaryrefslogtreecommitdiff
path: root/usr.bin/sudo/sudo_noexec.c
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>2004-09-28 15:10:52 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>2004-09-28 15:10:52 +0000
commitb2ce21d7e22822255c394cc618c029fdcd31be4d (patch)
treeba0dcff50d70b05985ecb9590c0bf828c151a021 /usr.bin/sudo/sudo_noexec.c
parent6d2330fc528f6b282a6ed3bff15e92d30ee98805 (diff)
Update to sudo 1.6.8p1
Diffstat (limited to 'usr.bin/sudo/sudo_noexec.c')
-rw-r--r--usr.bin/sudo/sudo_noexec.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/usr.bin/sudo/sudo_noexec.c b/usr.bin/sudo/sudo_noexec.c
new file mode 100644
index 00000000000..f06f03f53a3
--- /dev/null
+++ b/usr.bin/sudo/sudo_noexec.c
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2004 Todd C. Miller <Todd.Miller@courtesan.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "config.h"
+
+#include <errno.h>
+
+#ifndef lint
+static const char rcsid[] = "$Sudo: sudo_noexec.c,v 1.5 2004/02/13 21:36:43 millert Exp $";
+#endif /* lint */
+
+/*
+ * Dummy versions of the execve() family of syscalls. We don't need
+ * to stub out all of them, just the ones that correspond to actual
+ * system calls (which varies by OS). Note that it is still possible
+ * to access the real syscalls via the syscall() interface but very
+ * few programs actually do that.
+ */
+
+#ifndef errno
+extern int errno;
+#endif
+
+#define DUMMY(fn, args, atypes) \
+int \
+fn args \
+ atypes \
+{ \
+ errno = EACCES; \
+ return(-1); \
+}
+
+DUMMY(execve, (path, argv, envp),
+ const char *path; char *const argv[]; char *const envp[];)
+DUMMY(_execve, (path, argv, envp),
+ const char *path; char *const argv[]; char *const envp[];)
+DUMMY(execv, (path, argv, envp),
+ const char *path; char *const argv[];)
+DUMMY(_execv, (path, argv, envp),
+ const char *path; char *const argv[];)
+DUMMY(fexecve, (fd, argv, envp),
+ int fd; char *const argv[]; char *const envp[];)
+DUMMY(_fexecve, (fd, argv, envp),
+ int fd; char *const argv[]; char *const envp[];)