From faf593d23a7c4c09143373053106f61da3265384 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Wed, 26 Sep 2007 10:57:44 +0000 Subject: [PATCH] Drop the weird and undocumented behaviour of using positional argument parsing instead of getopt(3) if 8 command line arguments were given (as suggested by Matthias) and check whether all required arguments have been specified in order to spit out proper error messages and to avoid a possible segfault (as suggested by Thomas). git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1800 f882894a-f735-0410-b71e-b25c423dba1c --- NEWS | 2 ++ plugins/check_radius.c | 34 ++++++++++------------------------ 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/NEWS b/NEWS index 5d950ba..3156907 100644 --- a/NEWS +++ b/NEWS @@ -29,6 +29,8 @@ This file documents the major additions and syntax changes between releases. - enforce a full path for the command to run The "negate" utility can now remap custom states Check_radius now supports radiusclient-ng + The (undocumented) positional parameter parsing which check_radius used + instead of getopt(3) if 8 arguments were given is no longer available Check_by_ssh now supports multiline output IPv6 support can now be disabled using ./configure --without-ipv6 Fix check_ntp now honor ntp flags diff --git a/plugins/check_radius.c b/plugins/check_radius.c index 32af91f..dcb85ac 100644 --- a/plugins/check_radius.c +++ b/plugins/check_radius.c @@ -225,30 +225,6 @@ process_arguments (int argc, char **argv) {0, 0, 0, 0} }; - if (argc < 2) - return ERROR; - - if (argc == 9) { - config_file = argv[1]; - username = argv[2]; - password = argv[3]; - if (is_intpos (argv[4])) - timeout_interval = atoi (argv[4]); - else - usage2 (_("Timeout interval must be a positive integer"), optarg); - if (is_intpos (argv[5])) - retries = atoi (argv[5]); - else - usage4 (_("Number of retries must be a positive integer")); - server = argv[6]; - if (is_intpos (argv[7])) - port = atoi (argv[7]); - else - usage4 (_("Port must be a positive integer")); - expect = argv[8]; - return OK; - } - while (1) { c = getopt_long (argc, argv, "+hVvH:P:F:u:p:n:t:r:e:", longopts, &option); @@ -309,6 +285,16 @@ process_arguments (int argc, char **argv) break; } } + + if (server == NULL) + usage4 (_("Host not specified")); + if (username == NULL) + usage4 (_("User not specified")); + if (password == NULL) + usage4 (_("Password not specified")); + if (config_file == NULL) + usage4 (_("Configuration file not specified")); + return OK; } -- 2.30.2