X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/userv-utils/blobdiff_plain/a8e8db26410497a781ca36f59951201d55711f3a..f7b4be5ac332970bb5937ae586cea6de64d14f66:/www-cgi/ucgi.c diff --git a/www-cgi/ucgi.c b/www-cgi/ucgi.c index 006f8ae..a2ebe64 100644 --- a/www-cgi/ucgi.c +++ b/www-cgi/ucgi.c @@ -30,7 +30,7 @@ #include "ucgi.h" -static const char *const envok[] = { +static const char *const default_envok[] = { "AUTH_TYPE", "CONTENT_TYPE", "CONTENT_LENGTH", @@ -73,7 +73,8 @@ static void add_userv_var(const char *fulln, int main(int argc, const char **argv) { char *username; - const char *slash2, *pathi, *av; + const char *slash2, *pathi, *ev, *av; + const char *const *envok; size_t usernamelen, l; struct buildargs args; pid_t child, rchild; @@ -91,6 +92,14 @@ int main(int argc, const char **argv) { if (argc > MAX_ARGS) error("too many arguments"); + ev= getenv("UCGI_ENV_FILTER"); + if (ev) + envok= load_filters(LOADF_MUST, ev, LF_END); + else { + envok= load_filters(0, "/etc/userv/ucgi.env-filter", LF_END); + if (!envok) envok= default_envok; + } + pathi= getenv("PATH_INFO"); if (!pathi) error("PATH_INFO not found"); D( if (debugmode) {