diff options
Diffstat (limited to 'sub/busybox/bbsuid-footer')
-rw-r--r-- | sub/busybox/bbsuid-footer | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sub/busybox/bbsuid-footer b/sub/busybox/bbsuid-footer new file mode 100644 index 0000000..699c6f8 --- /dev/null +++ b/sub/busybox/bbsuid-footer @@ -0,0 +1,21 @@ +} ; + +static int okay (char const *s) +{ + register char const **p = list ; + for (; *p ; p++) if (!str_diff(s, *p)) return 1 ; + return 0 ; +} + +int main (int argc, char const *const *argv, char const *const *envp) +{ + stralloc sa = STRALLOC_ZERO ; + PROG = "busybox-setuid" ; + if (!sabasename(&sa, argv[0], str_len(argv[0]))) + strerr_diefu2sys(111, "sabasename", argv[0]) ; + if (!stralloc_0(&sa)) strerr_diefu1sys(111, "stralloc_0") ; + if (!okay(sa.s)) strerr_dief2x(100, sa.s, " is not granted root privileges") ; + stralloc_free(&sa) ; + execve("/bin/busybox", (char *const *)argv, (char *const *)envp) ; + strerr_dieexec(111, "/bin/busybox") ; +} |