You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Ruediger Pluem <rp...@apache.org> on 2009/02/03 22:08:09 UTC
Re: svn commit: r740149 - in /httpd/httpd/trunk: CHANGES modules/filters/mod_deflate.c
On 02/03/2009 12:20 AM, lars@apache.org wrote:
> Author: lars
> Date: Mon Feb 2 23:20:37 2009
> New Revision: 740149
>
> URL: http://svn.apache.org/viewvc?rev=740149&view=rev
> Log:
> mod_deflate: Fix creation of invalid Etag headers. We now make sure
> that the Etag value is properly quoted when adding the gzip marker.
> PR 39727.
>
> Modified:
> httpd/httpd/trunk/CHANGES
> httpd/httpd/trunk/modules/filters/mod_deflate.c
>
> Modified: httpd/httpd/trunk/CHANGES
> Modified: httpd/httpd/trunk/modules/filters/mod_deflate.c
> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/filters/mod_deflate.c?rev=740149&r1=740148&r2=740149&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/filters/mod_deflate.c (original)
> +++ httpd/httpd/trunk/modules/filters/mod_deflate.c Mon Feb 2 23:20:37 2009
> @@ -393,10 +393,13 @@
> static void deflate_check_etag(request_rec *r, const char *transform)
> {
> const char *etag = apr_table_get(r->headers_out, "ETag");
> - if (etag && (((etag[0] != 'W') && (etag[0] !='w')) || (etag[1] != '/'))) {
> - apr_table_set(r->headers_out, "ETag",
> - apr_pstrcat(r->pool, etag, "-", transform, NULL));
> - }
> + if ((etag && (strlen(etag) > 2))) {
> + if (etag[0] == '"') {
> + etag = apr_pstrndup(r->pool, etag, strlen(etag) - 2);
Shouldn't this be - 1 instead of - 2?
Think about the following ETag: "A"
Its length is 3, but after the apr_pstrndup operation we end up with "
and thus with an ETag of "-gzip".
Regards
RĂ¼diger