X-Git-Url: https://git.distorted.org.uk/~mdw/userv-utils/blobdiff_plain/77a36cae0e59a1e17c12c71fd7ff49be0958b11d..f601a2c663d9135dec19172a593502864d10393e:/www-cgi/ucgitarget.c diff --git a/www-cgi/ucgitarget.c b/www-cgi/ucgitarget.c index 9637235..a4b5690 100644 --- a/www-cgi/ucgitarget.c +++ b/www-cgi/ucgitarget.c @@ -32,12 +32,17 @@ #include "ucgi.h" +static void setenvar(const char *fulln, + const char *en, const char *ep, void *p) { + xsetenv(en, ep, 1); + unsetenv(fulln); +} + int main(int argc, const char **argv) { - char *uservarn, *scriptpath, *newvar; - const char *nextslash, *lastslash, *pathi, *ev, *ev2, *en, *scriptdir, *av; - const char *const *ep; + char *scriptpath, *newvar; + const char *nextslash, *lastslash, *pathi, *ev, *ev2, *scriptdir, *av; const char **arguments; - size_t scriptdirlen, scriptpathlen, l, uservarnl; + size_t scriptdirlen, scriptpathlen, l; struct stat stab; int r, nargs; @@ -55,17 +60,7 @@ int main(int argc, const char **argv) { scriptdir= newvar; scriptdirlen= strlen(scriptdir); - uservarn= 0; - uservarnl= 0; - for (ep= envok; (en= *ep); ep++) { - l= strlen(en)+11; - if (uservarnl MAX_ENVVAR_VALUE) error("environment variable too long"); - if (setenv(en,ev,1)) syserror("setenv"); - unsetenv(uservarn); - } + filter_environment(0, "USERV_U_E_", envok, setenvar, 0); scriptpath= 0; pathi= getenv("PATH_INFO");