Ver Fonte

np_extra_opts now retain pointers from argv so that plugins can still overwrite sensitive options

git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1971 f882894a-f735-0410-b71e-b25c423dba1c
Thomas Guyot-Sionnest há 18 anos atrás
pai
commit
d001e08133
2 ficheiros alterados com 4 adições e 4 exclusões
  1. 2 2
      lib/extra_opts.c
  2. 2 2
      lib/extra_opts.h

+ 2 - 2
lib/extra_opts.c

@@ -122,7 +122,7 @@ char **np_extra_opts(int *argc, char **argv, const char *plugin_name){
 	if(argv_new==NULL) die(STATE_UNKNOWN, _("malloc() failed!\n"));
 
 	/* starting with program name */
-	argv_new[0]=strdup(argv[0]);
+	argv_new[0]=argv[0];
 	argc_new=1;
 	/* then parsed ini opts (frying them up in the same run) */
 	while(extra_args){
@@ -132,7 +132,7 @@ char **np_extra_opts(int *argc, char **argv, const char *plugin_name){
 		free(ea1);
 	}
 	/* finally the rest of the argv array */
-	for (i=1; i<*argc; i++)	argv_new[argc_new++]=strdup(argv[i]);
+	for (i=1; i<*argc; i++)	argv_new[argc_new++]=argv[i];
 	*argc=argc_new;
 	/* and terminate. */
 	argv_new[argc_new]=NULL;

+ 2 - 2
lib/extra_opts.h

@@ -11,8 +11,8 @@
  * ini-procesed arguments always come first (in the ord of --extra-opts
  * arguments). If no --extra-opts arguments are provided or returned nothing
  * it returns **argv otherwise the new array is returned. --extra-opts are
- * always removed from **argv and the new array and all its elements can be
- * freed with free();
+ * always removed from **argv. The original pointers from **argv are kept in
+ * the new array to preserve ability to overwrite arguments in processlist.
  */
 char **np_extra_opts(int *argc, char **argv, const char *plugin_name);