X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=cgi.c;h=226017602f61c7531c62eb5e7967f83fd0b0a7b8;hp=b96dd431f15b837f10c82646c3aee06be69c63b7;hb=96bf13e8606919027cc3dc3597627396b9e55a0a;hpb=3229d1e2b39283a8827f3e04f43d00680144e25d diff --git a/cgi.c b/cgi.c index b96dd431..22601760 100644 --- a/cgi.c +++ b/cgi.c @@ -1,4 +1,3 @@ -const char cgi_rcs[] = "$Id: cgi.c,v 1.169 2017/01/23 13:05:26 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/cgi.c,v $ @@ -69,8 +68,6 @@ const char cgi_rcs[] = "$Id: cgi.c,v 1.169 2017/01/23 13:05:26 fabiankeil Exp $" /* jcc.h is for mutex semaphore globals only */ #include "jcc.h" -const char cgi_h_rcs[] = CGI_H_VERSION; - /* * List of CGI functions: name, handler, description * Note: Do NOT use single quotes in the description; @@ -96,10 +93,6 @@ static const struct cgi_dispatcher cgi_dispatchers[] = { "View the current configuration", #endif TRUE }, - { "show-version", - cgi_show_version, - "View the source code version numbers", - TRUE }, #ifdef FEATURE_CLIENT_TAGS /* * This is marked as harmless because despite the description @@ -441,6 +434,7 @@ static int referrer_is_safe(const struct client_state *csp) { char *referrer; static const char alternative_prefix[] = "http://" CGI_SITE_1_HOST "/"; + const char *trusted_cgi_referrer = csp->config->trusted_cgi_referrer; referrer = grep_cgi_referrer(csp); @@ -459,6 +453,18 @@ static int referrer_is_safe(const struct client_state *csp) return TRUE; } + else if ((trusted_cgi_referrer != NULL) && (0 == strncmp(referrer, + trusted_cgi_referrer, strlen(trusted_cgi_referrer)))) + { + /* + * After some more testing this block should be merged with + * the previous one or the log level should bedowngraded. + */ + log_error(LOG_LEVEL_INFO, "Granting access to %s based on trusted referrer %s", + csp->http->url, referrer); + + return TRUE; + } else { /* Untrustworthy referrer */ @@ -2113,15 +2119,12 @@ jb_err template_fill_for_cgi(const struct client_state *csp, err = template_load(csp, &rsp->body, templatename, 0); if (err == JB_ERR_FILE) { - free_map(exports); - return cgi_error_no_template(csp, rsp, templatename); + err = cgi_error_no_template(csp, rsp, templatename); } - else if (err) + else if (err == JB_ERR_OK) { - free_map(exports); - return err; /* JB_ERR_MEMORY */ + err = template_fill(&rsp->body, exports); } - err = template_fill(&rsp->body, exports); free_map(exports); return err; }