From: Patrick Steinhardt Date: Sun, 2 Jul 2017 13:42:50 +0000 (+0200) Subject: setpriv: do not process remaining args X-Git-Tag: 1_27_1~12 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=ee67c9a60ab202cb8f8cc13d8670a90cbfad7963;p=oweals%2Fbusybox.git setpriv: do not process remaining args 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 --- diff --git a/util-linux/setpriv.c b/util-linux/setpriv.c index 6bd663bf4..686ad45d5 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");