ipcalc: more correct checking for proper number of arguments
function old new delta ipcalc_main 581 569 -12 Signed-off-by: Steve Bennett <steveb@workware.net.au> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
39601843d7
commit
823b636cd1
@ -63,13 +63,13 @@ int get_prefix(unsigned long netmask);
|
||||
|
||||
#if ENABLE_FEATURE_IPCALC_LONG_OPTIONS
|
||||
static const char ipcalc_longopts[] ALIGN1 =
|
||||
"netmask\0" No_argument "m"
|
||||
"broadcast\0" No_argument "b"
|
||||
"network\0" No_argument "n"
|
||||
"netmask\0" No_argument "m" // netmask from IP (assuming complete class A, B, or C network)
|
||||
"broadcast\0" No_argument "b" // broadcast from IP [netmask]
|
||||
"network\0" No_argument "n" // network from IP [netmask]
|
||||
# if ENABLE_FEATURE_IPCALC_FANCY
|
||||
"prefix\0" No_argument "p"
|
||||
"hostname\0" No_argument "h"
|
||||
"silent\0" No_argument "s"
|
||||
"prefix\0" No_argument "p" // prefix from IP[/prefix] [netmask]
|
||||
"hostname\0" No_argument "h" // hostname from IP
|
||||
"silent\0" No_argument "s" // don’t ever display error messages
|
||||
# endif
|
||||
;
|
||||
#endif
|
||||
@ -92,15 +92,16 @@ int ipcalc_main(int argc UNUSED_PARAM, char **argv)
|
||||
#if ENABLE_FEATURE_IPCALC_LONG_OPTIONS
|
||||
applet_long_options = ipcalc_longopts;
|
||||
#endif
|
||||
opt_complementary = "-1:?2"; /* minimum 1 arg, maximum 2 args */
|
||||
opt = getopt32(argv, "mbn" IF_FEATURE_IPCALC_FANCY("phs"));
|
||||
argv += optind;
|
||||
if (opt & SILENT)
|
||||
logmode = LOGMODE_NONE; /* suppress error_msg() output */
|
||||
if (opt & (BROADCAST | NETWORK | NETPREFIX)) {
|
||||
if (!argv[0] || !argv[1] || argv[2])
|
||||
bb_show_usage();
|
||||
} else {
|
||||
if (!argv[0] || argv[1])
|
||||
opt &= ~SILENT;
|
||||
if (!(opt & (BROADCAST | NETWORK | NETPREFIX))) {
|
||||
/* if no options at all or
|
||||
* (no broadcast,network,prefix) and (two args)... */
|
||||
if (!opt || argv[1])
|
||||
bb_show_usage();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user