X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=src%2Ffilters.c;h=3c7265b3d51cab638dbc268655054d1cbd7a3e77;hb=b4864292cddd469335c27eba423d8cbe52e91f54;hp=9dd36b97bf88a2f46ab553ec212fbebff98373d4;hpb=0569c9fc6a93a31739f10efeee4f6a44eafb6e7c;p=privoxy.git diff --git a/src/filters.c b/src/filters.c index 9dd36b97..3c7265b3 100644 --- a/src/filters.c +++ b/src/filters.c @@ -1,7 +1,7 @@ -const char filters_rcs[] = "$Id: filters.c,v 2.0 2002/06/04 14:34:21 jongfoster Exp $"; +const char filters_rcs[] = "$Id: filters.c,v 2.1 2002/08/26 11:08:18 sarantis 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: @@ -38,6 +38,9 @@ const char filters_rcs[] = "$Id: filters.c,v 2.0 2002/06/04 14:34:21 jongfoster * * Revisions : * $Log: filters.c,v $ + * Revision 2.1 2002/08/26 11:08:18 sarantis + * Fix typo. + * * Revision 2.0 2002/06/04 14:34:21 jongfoster * Moving source files to src/ * @@ -1081,8 +1084,9 @@ struct http_response *redirect_url(struct client_state *csp) * * Description : Given a URL, decide whether it is an image or not, * using either the info from a previous +image action - * or, #ifdef FEATURE_IMAGE_DETECT_MSIE, the info from - * the browser's accept header. + * or, #ifdef FEATURE_IMAGE_DETECT_MSIE, and the browser + * is MSIE and not on a Mac, tell from the browser's accept + * header. * * Parameters : * 1 : csp = Current client state (buffers, headers, etc...) @@ -1097,7 +1101,7 @@ int is_imageurl(struct client_state *csp) char *tmp; tmp = get_header_value(csp->headers, "User-Agent:"); - if (tmp && strstr(tmp, "MSIE")) + if (tmp && strstr(tmp, "MSIE") && !strstr(tmp, "Mac_")) { tmp = get_header_value(csp->headers, "Accept:"); if (tmp && strstr(tmp, "image/gif")) @@ -1318,7 +1322,7 @@ char *pcrs_filter_response(struct client_state *csp) if ( NULL == b->joblist ) { log_error(LOG_LEVEL_RE_FILTER, "Filter %s has empty joblist. Nothing to do.", b->name); - return(NULL); + continue; } log_error(LOG_LEVEL_RE_FILTER, "re_filtering %s%s (size %d) with filter %s...", @@ -1469,7 +1473,12 @@ int remove_chunked_transfer_coding(char *buffer, const size_t size) log_error(LOG_LEVEL_ERROR, "Parse error while stripping \"chunked\" transfer coding"); return(0); } - newsize += chunksize; + + if ((newsize += chunksize) >= size) + { + log_error(LOG_LEVEL_ERROR, "Chunksize exceeds buffer in \"chunked\" transfer coding"); + return(0); + } from_p += 2; memmove(to_p, from_p, (size_t) chunksize);