aboutsummaryrefslogtreecommitdiff
path: root/repos/core/busybox/busybox-suidwrapper.c
diff options
context:
space:
mode:
Diffstat (limited to 'repos/core/busybox/busybox-suidwrapper.c')
-rw-r--r--repos/core/busybox/busybox-suidwrapper.c58
1 files changed, 0 insertions, 58 deletions
diff --git a/repos/core/busybox/busybox-suidwrapper.c b/repos/core/busybox/busybox-suidwrapper.c
deleted file mode 100644
index 8f224bc7..00000000
--- a/repos/core/busybox/busybox-suidwrapper.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <libgen.h>
-
-int main(int argc, char **argv)
-{
- const char * cmds[] = {
- "su",
- "ping",
- "ping6",
- "traceroute",
- "passwd",
- "login",
- "vlock",
- "wall",
- "crontab"
- };
-
- const char * baseexec = basename(argv[0]);
-
- if (!strcmp("busybox-suidwrapper", baseexec))
- {
- if (argc > 1 && !strcmp("-l", argv[1])){
- for (int i = 0; i < sizeof(cmds) / sizeof(cmds[0]); ++i)
- {
- printf("%s ", cmds[i]);
- }
- printf("\n");
- } else {
- printf("busybox SUID wrapper\n\nSupported commands:\n");
- printf("Usage:\n -l\tList available SUID commands\n");
- if (argc > 1) return 1;
- }
- return 0;
- }
-
- for (int i = 0; i < sizeof(cmds) / sizeof(cmds[0]); ++i)
- {
- if (!strcmp(cmds[i], baseexec))
- {
- char **newargv = malloc(sizeof(char *) * (argc + 2));
- newargv[0] = "/bin/busybox";
- newargv[1] = (char *)baseexec;
- for (int i = 1; i < argc; i++)
- newargv[i + 1] = argv[i];
- newargv[argc + 1] = NULL;
-
- int ret = execv("/bin/busybox", newargv);
- free(newargv);
- perror(argv[0]);
- return ret;
- }
- }
- fprintf(stderr, "%s","error: command not in suid whitelist!\n");
- return 1;
-}