[git commit] setpriv: do not process remaining args

Denys Vlasenko vda.linux at googlemail.com
Tue Jul 4 15:10:31 UTC 2017


commit: https://git.busybox.net/busybox/commit/?id=d253b557a338c5fe27e8f5e55540db07e7842fc4
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

By default, the 'getopt32' call will continue parsing the command line
even after hitting a non-option string. But in setpriv, this should be
avoided, as all parameters following the initial non-option argument are
in fact arguments to the binary that is to be executed by setpriv.
Otherwise, calling e.g. 'busybox setpriv ls -l' would result in an error
due to the unknown parameter "-l".

Fix the issue by passing "+" as the first character in the options
string. This will cause 'getopt32' to stop processing after hitting the
first non-option.

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 util-linux/setpriv.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/util-linux/setpriv.c b/util-linux/setpriv.c
index 6bd663b..686ad45 100644
--- a/util-linux/setpriv.c
+++ b/util-linux/setpriv.c
@@ -62,7 +62,8 @@ int setpriv_main(int argc UNUSED_PARAM, char **argv)
 
 	opt_complementary = "-1";
 	applet_long_options = setpriv_longopts;
-	opts = getopt32(argv, "");
+	opts = getopt32(argv, "+");
+
 	if (opts) {
 		if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0))
 			bb_simple_perror_msg_and_die("prctl: NO_NEW_PRIVS");


More information about the busybox-cvs mailing list