From d001e08133763427fded92847f3366d53811abca Mon Sep 17 00:00:00 2001 From: Thomas Guyot-Sionnest Date: Tue, 1 Apr 2008 09:31:27 +0000 Subject: [PATCH] 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 --- lib/extra_opts.c | 4 ++-- lib/extra_opts.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/extra_opts.c b/lib/extra_opts.c index d46d124..8c17fa4 100644 --- a/lib/extra_opts.c +++ b/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; diff --git a/lib/extra_opts.h b/lib/extra_opts.h index 8ce0903..0cb47fb 100644 --- a/lib/extra_opts.h +++ b/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); -- 2.30.2