From faf593d23a7c4c09143373053106f61da3265384 Mon Sep 17 00:00:00 2001
From: Holger Weiss <hweiss@users.sourceforge.net>
Date: Wed, 26 Sep 2007 10:57:44 +0000
Subject: 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

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;
 }
 
-- 
cgit v0.10-9-g596f

