diff options
author | Jan Pazdziora <jpazdziora@redhat.com> | 2013-11-19 14:04:29 +0800 |
---|---|---|
committer | Jan Pazdziora <jpazdziora@redhat.com> | 2013-11-19 14:04:29 +0800 |
commit | 08b6c0907f7b75700f5731cde8fef48d9f13b167 (patch) | |
tree | 197c7b20190963d16bdcb525b1f57f6b519a5c3f | |
parent | f69d399d15b3a6928e1fee278b45e36a0871f551 (diff) | |
download | mod_intercept_form_submit-08b6c0907f7b75700f5731cde8fef48d9f13b167.tar.gz mod_intercept_form_submit-08b6c0907f7b75700f5731cde8fef48d9f13b167.tar.xz mod_intercept_form_submit-08b6c0907f7b75700f5731cde8fef48d9f13b167.zip |
Do APR_BRIGADE_CONCAT into the cached brigade right after reading, it will ensure we will only have one brigade to work with when we attempt to clear the password.
-rw-r--r-- | mod_intercept_form_submit.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/mod_intercept_form_submit.c b/mod_intercept_form_submit.c index 542cc35..35d397b 100644 --- a/mod_intercept_form_submit.c +++ b/mod_intercept_form_submit.c @@ -244,19 +244,16 @@ void intercept_form_submit_filter_prefetch(request_rec * r, ifs_config * config, char * fragment = NULL; int fragment_length = 0; - apr_bucket_brigade * bb = NULL; + apr_bucket_brigade * bb = apr_brigade_create(f->c->pool, f->c->bucket_alloc); int fetch_more = 1; while (fetch_more) { - if (bb) - APR_BRIGADE_CONCAT(ctx->cached_brigade, bb); - else - bb = apr_brigade_create(f->c->pool, f->c->bucket_alloc); ctx->cached_ret = ap_get_brigade(f->next, bb, AP_MODE_READBYTES, APR_BLOCK_READ, HUGE_STRING_LEN); if (ctx->cached_ret != APR_SUCCESS) break; - apr_bucket * b; - for (b = APR_BRIGADE_FIRST(bb); b != APR_BRIGADE_SENTINEL(bb); b = APR_BUCKET_NEXT(b)) { + apr_bucket * b = APR_BRIGADE_FIRST(bb);; + APR_BRIGADE_CONCAT(ctx->cached_brigade, bb); + for (; b != APR_BRIGADE_SENTINEL(ctx->cached_brigade); b = APR_BUCKET_NEXT(b)) { if (! fetch_more) break; if (APR_BUCKET_IS_EOS(b)) { @@ -320,11 +317,6 @@ void intercept_form_submit_filter_prefetch(request_rec * r, ifs_config * config, } if (fragment) free(fragment); - - if (bb) { - APR_BRIGADE_CONCAT(ctx->cached_brigade, bb); - apr_brigade_cleanup(bb); - } } #define _INTERCEPT_CONTENT_TYPE "application/x-www-form-urlencoded" |