Reverted parts of my last commit
[privoxy.git] / filters.c
index 73b7761..84ea1d5 100644 (file)
--- a/filters.c
+++ b/filters.c
@@ -1,4 +1,4 @@
-const char filters_rcs[] = "$Id: filters.c,v 1.72 2006/12/22 18:52:53 fabiankeil Exp $";
+const char filters_rcs[] = "$Id: filters.c,v 1.74 2006/12/24 17:37:38 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/filters.c,v $
@@ -40,6 +40,14 @@ const char filters_rcs[] = "$Id: filters.c,v 1.72 2006/12/22 18:52:53 fabiankeil
  *
  * Revisions   :
  *    $Log: filters.c,v $
+ *    Revision 1.74  2006/12/24 17:37:38  fabiankeil
+ *    Adjust comment in pcrs_filter_response()
+ *    to recent pcrs changes. Hohoho.
+ *
+ *    Revision 1.73  2006/12/23 16:01:02  fabiankeil
+ *    Don't crash if pcre returns an error code
+ *    that pcrs didn't expect. Fixes BR 1621173.
+ *
  *    Revision 1.72  2006/12/22 18:52:53  fabiankeil
  *    Modified is_untrusted_url to complain in case of
  *    write errors and to give a reason when adding new
@@ -1081,7 +1089,7 @@ struct http_response *trust_url(struct client_state *csp)
    p = strdup("");
    for (tl = csp->config->trust_list; (t = *tl) != NULL ; tl++)
    {
-      sprintf(buf, "<li>%s</li>\n", t->spec);
+      snprintf(buf, sizeof(buf), "<li>%s</li>\n", t->spec);
       string_append(&p, buf);
    }
    err = map(exports, "trusted-referrers", 1, p, 0);
@@ -1103,7 +1111,7 @@ struct http_response *trust_url(struct client_state *csp)
       p = strdup("");
       for (l = csp->config->trust_info->first; l ; l = l->next)
       {
-         sprintf(buf, "<li> <a href=\"%s\">%s</a><br>\n",l->str, l->str);
+         snprintf(buf, sizeof(buf), "<li> <a href=\"%s\">%s</a><br>\n", l->str, l->str);
          string_append(&p, buf);
       }
       err = map(exports, "trust-info", 1, p, 0);
@@ -1680,7 +1688,7 @@ char *pcrs_filter_response(struct client_state *csp)
    {
       return(NULL);
    }
-   size = csp->iob->eod - csp->iob->cur;
+   size = (size_t)(csp->iob->eod - csp->iob->cur);
 
    /*
     * Need to check the set of re_filterfiles...
@@ -1781,23 +1789,23 @@ char *pcrs_filter_response(struct client_state *csp)
                else
                {
                   /*
-                   * The job caused an unexpected error. Inform the user
-                   * and skip the rest of jobs in this filter. We could
+                   * This job caused an unexpected error. Inform the user
+                   * and skip the rest of the jobs in this filter. We could
                    * continue with the next job, but usually the jobs
                    * depend on each other or are similar enough to
-                   * fail with the same reason.
+                   * fail for the same reason.
                    *
-                   * XXX: In theory pcrs_strerror() would
-                   * return a proper error message here.
+                   * At the moment our pcrs expects the error codes of pcre 3.4,
+                   * but newer pcre versions can return additional error codes.
+                   * As a result pcrs_strerror()'s error message might be
+                   * "Unknown error ...", therefore we print the numerical value
+                   * as well.
                    *
-                   * At the moment, however, our pcrs expects the
-                   * error codes of pcre 3.4 and newer pcre version
-                   * return different error codes. As a result
-                   * pcrs_strerror()'s error message might be bogus,
-                   * therefore we print the numerical value as well.
+                   * XXX: Is this important enough for LOG_LEVEL_ERROR or
+                   * should we use LOG_LEVEL_RE_FILTER instead?
                    */
                   log_error(LOG_LEVEL_ERROR, "Skipped filter \'%s\' after job number %u: %s (%d)",
-                     b->name, job_number, pcrs_strerror (job_hits), job_hits);
+                     b->name, job_number, pcrs_strerror(job_hits), job_hits);
                   break;
                }
             }
@@ -1850,7 +1858,9 @@ char *gif_deanimate_response(struct client_state *csp)
 {
    struct binbuffer *in, *out;
    char *p;
-   size_t size = csp->iob->eod - csp->iob->cur;
+   size_t size;
+
+   size = (size_t)(csp->iob->eod - csp->iob->cur);
 
    /*
     * If the body has a "chunked" transfer-encoding,
@@ -1920,9 +1930,12 @@ char *gif_deanimate_response(struct client_state *csp)
  *********************************************************************/
 char *jpeg_inspect_response(struct client_state *csp)
 {
-   struct binbuffer *in = NULL, *out = NULL;
+   struct binbuffer  *in = NULL;
+   struct binbuffer *out = NULL;
    char *p = NULL;
-   size_t size = csp->iob->eod - csp->iob->cur;
+   size_t size;
+
+   size = (size_t)(csp->iob->eod - csp->iob->cur);
 
    /*
     * If the body has a "chunked" transfer-encoding,
@@ -1995,7 +2008,7 @@ char *jpeg_inspect_response(struct client_state *csp)
  *                went wrong
  *
  *********************************************************************/
-int remove_chunked_transfer_coding(char *buffer, const size_t size)
+size_t remove_chunked_transfer_coding(char *buffer, const size_t size)
 {
    size_t newsize = 0;
    unsigned int chunksize = 0;