From d3f5ef3a0876cf63afa593054cd8e98fb26651f1 Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Mon, 14 Dec 2020 17:53:48 +0000 Subject: [PATCH] core_input_filter: BRIGADE_NORMALIZE() can be called with an empty brigade. So make it a noop in this case, without dereferencing the sentinel (i.e. change its do{}while to a while{}). git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884429 13f79535-47bb-0310-9956-ffa450edef68 --- server/core_filters.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/server/core_filters.c b/server/core_filters.c index 1b5317888d4..4ea56495e59 100644 --- a/server/core_filters.c +++ b/server/core_filters.c @@ -61,17 +61,13 @@ #define BRIGADE_NORMALIZE(b) \ do { \ apr_bucket *e = APR_BRIGADE_FIRST(b); \ - do { \ + while (e != APR_BRIGADE_SENTINEL(b)) { \ + apr_bucket *next = APR_BUCKET_NEXT(e); \ if (e->length == 0 && !APR_BUCKET_IS_METADATA(e)) { \ - apr_bucket *d; \ - d = APR_BUCKET_NEXT(e); \ apr_bucket_delete(e); \ - e = d; \ } \ - else { \ - e = APR_BUCKET_NEXT(e); \ - } \ - } while (!APR_BRIGADE_EMPTY(b) && (e != APR_BRIGADE_SENTINEL(b))); \ + e = next; \ + } \ } while (0) /* we know core's module_index is 0 */ @@ -127,9 +123,6 @@ apr_status_t ap_core_input_filter(ap_filter_t *f, apr_bucket_brigade *b, } else { ap_filter_reinstate_brigade(f, ctx->bb, NULL); - if (APR_BRIGADE_EMPTY(ctx->bb)) { - return APR_EOF; - } } /* ### This is bad. */ -- 2.47.3