Code

Drop the weird and undocumented behaviour of using positional argument
authorHolger Weiss <hweiss@users.sourceforge.net>
Wed, 26 Sep 2007 10:57:44 +0000 (10:57 +0000)
committerHolger Weiss <hweiss@users.sourceforge.net>
Wed, 26 Sep 2007 10:57:44 +0000 (10:57 +0000)
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
plugins/check_radius.c

diff --git a/NEWS b/NEWS
index 5d950ba7948edf3077baa4f4bee2559cc5571e7c..3156907964bfcba4fe2805b4d9fde6aa242c51a8 100644 (file)
--- 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
index 32af91fa19dc1b2394ed3f93fca07a992070b54f..dcb85acaec21eab28067ae8a109844962fbf991e 100644 (file)
@@ -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;
 }