Commit 28d22d18 authored by Ruediger Pluem's avatar Ruediger Pluem
Browse files

* Actually append new data to the validation buffer and do not overwrite old

  data already there by setting the correct offset for the target buffer.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@475915 13f79535-47bb-0310-9956-ffa450edef68
parent 48ecb649
Loading
Loading
Loading
Loading
+10 −6
Changes for modules/filters/mod_deflate.c: 10 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -1144,21 +1144,25 @@ static apr_status_t inflate_out_filter(ap_filter_t *f,
                copy_size = VALIDATION_SIZE - ctx->validation_buffer_length;
                if (copy_size > ctx->stream.avail_in)
                    copy_size = ctx->stream.avail_in;
                memcpy(ctx->validation_buffer, ctx->stream.next_in, copy_size);
            } else {
                memcpy(ctx->validation_buffer + ctx->validation_buffer_length,
                       ctx->stream.next_in, copy_size);
                /* Saved copy_size bytes */
                ctx->stream.avail_in -= copy_size;
            }
            if (ctx->stream.avail_in) {
                ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
                              "Zlib: %d bytes of garbage at the end of "
                              "compressed stream.", ctx->stream.avail_in);
            }
                /*
                 * There is nothing worth consuming for zlib left, because it is
                 * either garbage data or the data has been copied to the
             * validation buffer (processing validation data is no business for
             * zlib). So set ctx->stream.avail_in to zero to indicate this to
             * the following while loop.
                 * validation buffer (processing validation data is no business
                 * for zlib). So set ctx->stream.avail_in to zero to indicate
                 * this to the following while loop.
                 */
                ctx->stream.avail_in = 0;
            }
        }

        zRC = Z_OK;