-const char filters_rcs[] = "$Id: filters.c,v 2.1 2002/08/26 11:08:18 sarantis Exp $";
+const char filters_rcs[] = "$Id: filters.c,v 2.3 2002/12/28 03:58:19 david__schmidt Exp $";
/*********************************************************************
*
- * File : $Source: /cvsroot/ijbswa//current/src/filters.c,v $
+ * File : $Source: /cvsroot/ijbswa/current/src/filters.c,v $
*
* Purpose : Declares functions to parse/crunch headers and pages.
* Functions declared include:
*
* Revisions :
* $Log: filters.c,v $
+ * Revision 2.3 2002/12/28 03:58:19 david__schmidt
+ * Initial drop of dashboard instrumentation - enabled with
+ * --enable-activity-console
+ *
+ * Revision 2.2 2002/09/04 15:38:24 oes
+ * Synced with the stable branch:
+ * Revision 1.58.2.2 2002/08/01 17:18:28 oes
+ * Fixed BR 537651 / SR 579724 (MSIE image detect improper for IE/Mac)
+ *
+ * Revision 1.58.2.1 2002/07/26 15:18:53 oes
+ * - Bugfix: Executing a filters without jobs no longer results in
+ * turing off *all* filters.
+ * - Security fix: Malicious web servers can't cause a seg fault
+ * through bogus chunk sizes anymore
+ *
* Revision 2.1 2002/08/26 11:08:18 sarantis
* Fix typo.
*
#include "list.h"
#include "deanimate.h"
#include "urlmatch.h"
-
+#ifdef FEATURE_ACTIVITY_CONSOLE
+#include "stats.h"
+#endif /* def FEATURE_ACTIVITY_CONSOLE */
#ifdef _WIN32
#include "win32.h"
#endif
}
else
{
+#ifdef FEATURE_ACTIVITY_CONSOLE
+ accumulate_stats(STATS_ACL_RESTRICT, 1);
+#endif /* def FEATURE_ACTIVITY_CONSOLE */
return(1);
}
}
/* and handle accordingly: */
if ((p == NULL) || (0 == strcmpic(p, "pattern")))
{
+#ifdef FEATURE_ACTIVITY_CONSOLE
+ accumulate_stats(STATS_IMAGE_BLOCK, 1);
+#endif /* def FEATURE_ACTIVITY_CONSOLE */
rsp->body = bindup(image_pattern_data, image_pattern_length);
if (rsp->body == NULL)
{
else if (0 == strcmpic(p, "blank"))
{
+#ifdef FEATURE_ACTIVITY_CONSOLE
+ accumulate_stats(STATS_IMAGE_BLOCK, 1);
+#endif /* def FEATURE_ACTIVITY_CONSOLE */
rsp->body = bindup(image_blank_data, image_blank_length);
if (rsp->body == NULL)
{
int hits=0;
size_t size;
- char *old = csp->iob->cur, *new = NULL;
+ char *old_buf = csp->iob->cur, *new_buf = NULL;
pcrs_job *job;
struct file_list *fl;
/* Apply all jobs from the joblist */
for (job = b->joblist; NULL != job; job = job->next)
{
- current_hits += pcrs_execute(job, old, size, &new, &size);
- if (old != csp->iob->cur) free(old);
- old=new;
+ current_hits += pcrs_execute(job, old_buf, size, &new_buf, &size);
+ if (old_buf != csp->iob->cur) free(old_buf);
+ old_buf=new_buf;
}
log_error(LOG_LEVEL_RE_FILTER, " ...produced %d hits (new size %d).", current_hits, size);
*/
if (!hits)
{
- free(new);
+ free(new_buf);
return(NULL);
}
+#ifdef FEATURE_ACTIVITY_CONSOLE
+ else
+ accumulate_stats(STATS_FILTER, hits);
+#endif /* def FEATURE_ACTIVITY_CONSOLE */
csp->flags |= CSP_FLAG_MODIFIED;
csp->content_length = size;
IOB_RESET(csp);
- return(new);
+ return(new_buf);
}
}
else
{
+#ifdef FEATURE_ACTIVITY_CONSOLE
+ accumulate_stats(STATS_GIF_DEANIMATE, 1);
+#endif /* def FEATURE_ACTIVITY_CONSOLE */
log_error(LOG_LEVEL_DEANIMATE, "Success! GIF shrunk from %d bytes to %d.", size, out->offset);
}
csp->content_length = out->offset;