-const char filters_rcs[] = "$Id: filters.c,v 1.104 2008/03/27 18:27:24 fabiankeil Exp $";
+const char filters_rcs[] = "$Id: filters.c,v 1.112 2009/03/01 18:28:23 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/filters.c,v $
*
* Revisions :
* $Log: filters.c,v $
+ * Revision 1.112 2009/03/01 18:28:23 fabiankeil
+ * Help clang understand that we aren't dereferencing
+ * NULL pointers here.
+ *
+ * Revision 1.111 2008/12/04 18:13:46 fabiankeil
+ * Fix a cparser warning.
+ *
+ * Revision 1.110 2008/11/10 16:40:25 fabiankeil
+ * Fix a gcc44 warning.
+ *
+ * Revision 1.109 2008/11/08 15:48:41 fabiankeil
+ * Mention actual values when complaining about
+ * the chunk size exceeding the buffer size.
+ *
+ * Revision 1.108 2008/05/21 15:35:08 fabiankeil
+ * - Mark csp as immutable for block_acl().
+ * - Remove an obsolete complaint about filter_popups().
+ *
+ * Revision 1.107 2008/05/04 17:52:56 fabiankeil
+ * Adjust parse_http_url() call to new prototype.
+ *
+ * Revision 1.106 2008/05/03 16:40:44 fabiankeil
+ * Change content_filters_enabled()'s parameter from
+ * csp->action to action so it can be also used in the
+ * CGI code. Don't bother checking if there are filters
+ * loaded, as that's somewhat besides the point.
+ *
+ * Revision 1.105 2008/03/28 15:13:39 fabiankeil
+ * Remove inspect-jpegs action.
+ *
* Revision 1.104 2008/03/27 18:27:24 fabiankeil
* Remove kill-popups action.
*
* Returns : 0 = FALSE (don't block) and 1 = TRUE (do block)
*
*********************************************************************/
-int block_acl(struct access_control_addr *dst, struct client_state *csp)
+int block_acl(const struct access_control_addr *dst, const struct client_state *csp)
{
struct access_control_list *acl = csp->config->acl;
aca->mask = 0;
for (i=1; i <= masklength ; i++)
{
- aca->mask |= (1 << (32 - i));
+ aca->mask |= (1U << (32 - i));
}
/* now mask off the host portion of the ip address
/*
* If not, do we maybe trust its referrer?
*/
- err = parse_http_url(referer, rhttp, csp);
+ err = parse_http_url(referer, rhttp, REQUIRE_PROTOCOL);
if (err)
{
return 1;
/* since this path points into a user's home space
* be sure to include this spec in the trustfile.
*/
- int path_len = path_end - path; /* save offset */
+ long path_len = path_end - path; /* save offset */
path = strdup(path); /* Copy string */
if (path != NULL)
{
* Description : Decides which content filter function has
* to be applied (if any).
*
- * XXX: Doesn't handle filter_popups()
- * because of the different prototype. Probably
- * we should ditch filter_popups() anyway, it's
- * even less reliable than popup blocking based
- * on pcrs filters.
- *
* Parameters :
* 1 : csp = Current client state (buffers, headers, etc...)
*
return JB_ERR_PARSE;
}
- while (chunksize > 0)
+ while (chunksize > 0U)
{
if (NULL == (from_p = strstr(from_p, "\r\n")))
{
if ((newsize += chunksize) >= *size)
{
- log_error(LOG_LEVEL_ERROR, "Chunksize exceeds buffer in \"chunked\" transfer coding");
+ log_error(LOG_LEVEL_ERROR,
+ "Chunk size %d exceeds buffer size %d in \"chunked\" transfer coding",
+ chunksize, *size);
return JB_ERR_PARSE;
}
from_p += 2;
log_error(LOG_LEVEL_FATAL,
"can't allocate memory for forward-override{%s}", forward_override_line);
/* Never get here - LOG_LEVEL_FATAL causes program exit */
+ return NULL;
}
vec_count = ssplit(forward_settings, " \t", vec, SZ(vec), 1, 1);
if (NULL != (socks_proxy = strchr(fwd->gateway_host, ':')))
{
*socks_proxy++ = '\0';
- fwd->gateway_port = strtol(socks_proxy, NULL, 0);
+ fwd->gateway_port = (int)strtol(socks_proxy, NULL, 0);
}
if (fwd->gateway_port <= 0)
if (NULL != (http_parent = strchr(fwd->forward_host, ':')))
{
*http_parent++ = '\0';
- fwd->forward_port = strtol(http_parent, NULL, 0);
+ fwd->forward_port = (int)strtol(http_parent, NULL, 0);
}
if (fwd->forward_port <= 0)
* enabled for the current request.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
+ * 1 : action = Action spec to check.
*
* Returns : TRUE for yes, FALSE otherwise
*
*********************************************************************/
-inline int content_filters_enabled(const struct client_state *csp)
+int content_filters_enabled(const struct current_action_spec *action)
{
- return (((csp->rlist != NULL) &&
- (!list_is_empty(csp->action->multi[ACTION_MULTI_FILTER]))) ||
- (csp->action->flags & ACTION_DEANIMATE));
+ return ((action->flags & ACTION_DEANIMATE) ||
+ !list_is_empty(action->multi[ACTION_MULTI_FILTER]));
}
/*