Add patches/11_check_dhcp_parsing_option from upstream maint branch (Closes: #784319)
This commit is contained in:
parent
608ba7503d
commit
8e98d7f62f
107
debian/patches/11_check_dhcp_parsing_option
vendored
Normal file
107
debian/patches/11_check_dhcp_parsing_option
vendored
Normal file
|
@ -0,0 +1,107 @@
|
|||
From 466cb79e5224327c29fc6b84a1cec99c2b190c5a Mon Sep 17 00:00:00 2001
|
||||
From: Holger Weiss <holger@zedat.fu-berlin.de>
|
||||
Date: Fri, 2 Oct 2015 12:18:13 +0200
|
||||
Subject: [PATCH] check_dhcp: Fix option parsing
|
||||
|
||||
The call_getopt() function didn't always return the correct number of
|
||||
processed arguments. However, since check_dhcp doesn't support
|
||||
non-option arguments, the caller doesn't need this number anyway.
|
||||
|
||||
Closes #1345.
|
||||
---
|
||||
plugins-root/check_dhcp.c | 43 ++++++++++++-------------------------------
|
||||
1 file changed, 12 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/plugins-root/check_dhcp.c b/plugins-root/check_dhcp.c
|
||||
index 5508d5f..25d4ed4 100644
|
||||
--- a/plugins-root/check_dhcp.c
|
||||
+++ b/plugins-root/check_dhcp.c
|
||||
@@ -229,7 +229,7 @@ struct in_addr requested_address;
|
||||
|
||||
int process_arguments(int, char **);
|
||||
int call_getopt(int, char **);
|
||||
-int validate_arguments(void);
|
||||
+int validate_arguments(int, int);
|
||||
void print_usage(void);
|
||||
void print_help(void);
|
||||
|
||||
@@ -1059,29 +1059,19 @@ int get_results(void){
|
||||
|
||||
/* process command-line arguments */
|
||||
int process_arguments(int argc, char **argv){
|
||||
- int c;
|
||||
+ int arg_index;
|
||||
|
||||
if(argc<1)
|
||||
return ERROR;
|
||||
|
||||
- c=0;
|
||||
- while((c+=(call_getopt(argc-c,&argv[c])))<argc){
|
||||
-
|
||||
- /*
|
||||
- if(is_option(argv[c]))
|
||||
- continue;
|
||||
- */
|
||||
- }
|
||||
-
|
||||
- return validate_arguments();
|
||||
+ arg_index = call_getopt(argc,argv);
|
||||
+ return validate_arguments(argc,arg_index);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int call_getopt(int argc, char **argv){
|
||||
- int c=0;
|
||||
- int i=0;
|
||||
-
|
||||
+ extern int optind;
|
||||
int option_index = 0;
|
||||
static struct option long_options[] =
|
||||
{
|
||||
@@ -1098,25 +1088,14 @@ int call_getopt(int argc, char **argv){
|
||||
};
|
||||
|
||||
while(1){
|
||||
- c=getopt_long(argc,argv,"+hVvt:s:r:t:i:m:u",long_options,&option_index);
|
||||
+ int c=0;
|
||||
|
||||
- i++;
|
||||
+ c=getopt_long(argc,argv,"+hVvt:s:r:t:i:m:u",long_options,&option_index);
|
||||
|
||||
if(c==-1||c==EOF||c==1)
|
||||
break;
|
||||
|
||||
switch(c){
|
||||
- case 'w':
|
||||
- case 'r':
|
||||
- case 't':
|
||||
- case 'i':
|
||||
- i++;
|
||||
- break;
|
||||
- default:
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- switch(c){
|
||||
|
||||
case 's': /* DHCP server address */
|
||||
resolve_host(optarg,&dhcp_ip);
|
||||
@@ -1181,12 +1160,14 @@ int call_getopt(int argc, char **argv){
|
||||
break;
|
||||
}
|
||||
}
|
||||
-
|
||||
- return i;
|
||||
+ return optind;
|
||||
}
|
||||
|
||||
|
||||
-int validate_arguments(void){
|
||||
+int validate_arguments(int argc, int arg_index){
|
||||
+
|
||||
+ if(argc-optind > 0)
|
||||
+ usage(_("Got unexpected non-option argument"));
|
||||
|
||||
return OK;
|
||||
}
|
1
debian/patches/series
vendored
1
debian/patches/series
vendored
|
@ -1,3 +1,4 @@
|
|||
02_check_icmp_links
|
||||
# commited upstream
|
||||
10_sslutils_checksslv3
|
||||
11_check_dhcp_parsing_option
|
||||
|
|
Loading…
Reference in a new issue