aboutsummaryrefslogtreecommitdiff
path: root/miscutils/drop.c
diff options
context:
space:
mode:
Diffstat (limited to 'miscutils/drop.c')
-rw-r--r--miscutils/drop.c51
1 files changed, 48 insertions, 3 deletions
diff --git a/miscutils/drop.c b/miscutils/drop.c
index 3e71f6180..f73125e1b 100644
--- a/miscutils/drop.c
+++ b/miscutils/drop.c
@@ -13,9 +13,27 @@
13//config: help 13//config: help
14//config: Run a command without elevated privileges 14//config: Run a command without elevated privileges
15 15
16//config:config CDROP
17//config: bool "cdrop"
18//config: default y
19//config: depends on PLATFORM_MINGW32 && SH_IS_ASH
20//config: help
21//config: Run a command without elevated privileges using cmd.exe
22
23//config:config PDROP
24//config: bool "pdrop"
25//config: default y
26//config: depends on PLATFORM_MINGW32 && SH_IS_ASH
27//config: help
28//config: Run a command without elevated privileges using PowerShell
29
16//applet:IF_DROP(APPLET(drop, BB_DIR_USR_BIN, BB_SUID_DROP)) 30//applet:IF_DROP(APPLET(drop, BB_DIR_USR_BIN, BB_SUID_DROP))
31//applet:IF_CDROP(APPLET_ODDNAME(cdrop, drop, BB_DIR_USR_BIN, BB_SUID_DROP, cdrop))
32//applet:IF_PDROP(APPLET_ODDNAME(pdrop, drop, BB_DIR_USR_BIN, BB_SUID_DROP, pdrop))
17 33
18//kbuild:lib-$(CONFIG_DROP) += drop.o 34//kbuild:lib-$(CONFIG_DROP) += drop.o
35//kbuild:lib-$(CONFIG_CDROP) += drop.o
36//kbuild:lib-$(CONFIG_PDROP) += drop.o
19 37
20//usage:#define drop_trivial_usage 38//usage:#define drop_trivial_usage
21//usage: "[COMMAND | -c [ARG...]]" 39//usage: "[COMMAND | -c [ARG...]]"
@@ -23,6 +41,18 @@
23//usage: "Drop elevated privileges and run a command. If no COMMAND\n" 41//usage: "Drop elevated privileges and run a command. If no COMMAND\n"
24//usage: "is provided run the BusyBox shell.\n" 42//usage: "is provided run the BusyBox shell.\n"
25 43
44//usage:#define cdrop_trivial_usage
45//usage: "[COMMAND | /c [ARG...]]"
46//usage:#define cdrop_full_usage "\n\n"
47//usage: "Drop elevated privileges and run a command. If no COMMAND\n"
48//usage: "is provided run cmd.exe.\n"
49
50//usage:#define pdrop_trivial_usage
51//usage: "[COMMAND | -c [ARG...]]"
52//usage:#define pdrop_full_usage "\n\n"
53//usage: "Drop elevated privileges and run a command. If no COMMAND\n"
54//usage: "is provided run PowerShell.\n"
55
26#include "libbb.h" 56#include "libbb.h"
27#include <winsafer.h> 57#include <winsafer.h>
28#include <lazyload.h> 58#include <lazyload.h>
@@ -69,9 +99,24 @@ int drop_main(int argc, char **argv)
69 sizeof(TOKEN_MANDATORY_LABEL))) { 99 sizeof(TOKEN_MANDATORY_LABEL))) {
70 int skip = 1; 100 int skip = 1;
71 101
72 if (argc == 1 || strcmp(argv[1], "-c") == 0) { 102 if (argc == 1 || strcmp(argv[1], "-c") == 0
73 exe = bb_busybox_exec_path; 103 IF_CDROP(|| strcmp(argv[1], "/c") == 0)) {
74 cmd = xstrdup("sh"); 104#if ENABLE_PDROP
105 if (*applet_name == 'p') {
106 exe = "C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe";
107 cmd = xstrdup("powershell");
108 } else
109#endif
110#if ENABLE_CDROP
111 if (*applet_name == 'c') {
112 exe = "C:/Windows/System32/cmd.exe";
113 cmd = xstrdup("cmd");
114 } else
115#endif
116 {
117 exe = bb_busybox_exec_path;
118 cmd = xstrdup("sh");
119 }
75 skip = 0; 120 skip = 0;
76 } else { 121 } else {
77 char *file; 122 char *file;