Skip to content

Commit db2b738

Browse files
committed
Fix potential segfault on bad body filter
1 parent fdbd678 commit db2b738

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/mod_redirectionio.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ static apr_status_t redirectionio_filter_body_filtering(ap_filter_t *f, apr_buck
269269
rv = apr_bucket_read(b, &input, (apr_size_t *)&input_size, APR_BLOCK_READ);
270270

271271
if (rv != APR_SUCCESS) {
272-
redirectionio_action_body_filter_close(ctx->body_filter);
272+
redirectionio_action_body_filter_drop(ctx->body_filter);
273273
ctx->body_filter = NULL;
274274
ap_remove_output_filter(f);
275275

@@ -280,7 +280,10 @@ static apr_status_t redirectionio_filter_body_filtering(ap_filter_t *f, apr_buck
280280
if (input_size > 0) {
281281
input_str = strndup(input, input_size);
282282
output = redirectionio_action_body_filter_filter(ctx->body_filter, input_str);
283-
free((char *)input_str);
283+
284+
if (output != input_str) {
285+
free((char *)input_str);
286+
}
284287

285288
if (output == NULL) {
286289
ap_remove_output_filter(f);

0 commit comments

Comments
 (0)