-const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.94 2009/08/01 11:42:43 fabiankeil Exp $";
+const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.98 2010/03/27 18:29:59 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgisimple.c,v $
* Functions declared include:
*
*
- * Copyright : Written by and Copyright (C) 2001-2008 the SourceForge
+ * Copyright : Written by and Copyright (C) 2001-2010 the
* Privoxy team. http://www.privoxy.org/
*
* Based on the Internet Junkbuster originally written
assert(rsp);
assert(parameters);
+ if (0 == strncmpic(csp->config->usermanual, "http://", 7))
+ {
+ log_error(LOG_LEVEL_CGI, "Request for local user-manual "
+ "received while user-manual delivery is disabled.");
+ return cgi_error_404(csp, rsp, parameters);
+ }
+
if (!parameters->first)
{
/* requested http://p.p/user-manual (without trailing slash) */
* 1) "http://" or "https://" prefix present and followed by URL - OK
* 2) Only the "http://" or "https://" part is present, no URL - change
* to empty string so it will be detected later as "no URL".
- * 3) Parameter specified but doesn't contain "http(s?)://" - add a
+ * 3) Parameter specified but doesn't start with "http(s?)://" - add a
* "http://" prefix.
* 4) Parameter not specified or is empty string - let this fall through
* for now, next block of code will handle it.
url_param[0] = '\0';
}
}
- else if ((url_param[0] != '\0') && (NULL == strstr(url_param, "://")))
+ else if ((url_param[0] != '\0')
+ && ((NULL == strstr(url_param, "://")
+ || (strstr(url_param, "://") > strstr(url_param, "/")))))
{
- /* No prefix - assume http:// */
+ /*
+ * No prefix or at least no prefix before
+ * the first slash - assume http://
+ */
char *url_param_prefixed = strdup("http://");
if (JB_ERR_OK != string_join(&url_param_prefixed, url_param))
{
jb_err err = JB_ERR_OK;
+#ifdef FEATURE_ACCEPT_FILTER
+ if (!err) err = map_conditional(exports, "FEATURE_ACCEPT_FILTER", 1);
+#else /* ifndef FEATURE_ACCEPT_FILTER */
+ if (!err) err = map_conditional(exports, "FEATURE_ACCEPT_FILTER", 0);
+#endif /* ndef FEATURE_ACCEPT_FILTER */
+
#ifdef FEATURE_ACL
if (!err) err = map_conditional(exports, "FEATURE_ACL", 1);
#else /* ifndef FEATURE_ACL */