summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2021-08-29 22:20:54 +0300
committerMaxim Dounin <mdounin@mdounin.ru>2021-08-29 22:20:54 +0300
commitfd9d43b087b4247f8cb5f91845be46bd624c175a (patch)
tree411d6f4191dc071c1774feec0e3a3f313a21cb67
parentaa02695f5ea70f6628317b56f93e7e8733d4a029 (diff)
downloadnginx-fd9d43b087b4247f8cb5f91845be46bd624c175a.tar.gz
Request body: added alert to catch duplicate body saving.
If due to an error ngx_http_request_body_save_filter() is called more than once with rb->rest == 0, this used to result in a segmentation fault. Added an alert to catch such errors, just in case.
-rw-r--r--src/http/ngx_http_request_body.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/http/ngx_http_request_body.c b/src/http/ngx_http_request_body.c
index b72614ff9..c5401fd42 100644
--- a/src/http/ngx_http_request_body.c
+++ b/src/http/ngx_http_request_body.c
@@ -1246,6 +1246,12 @@ ngx_http_request_body_save_filter(ngx_http_request_t *r, ngx_chain_t *in)
if (rb->temp_file || r->request_body_in_file_only) {
+ if (rb->bufs && rb->bufs->buf->in_file) {
+ ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
+ "body already in file");
+ return NGX_HTTP_INTERNAL_SERVER_ERROR;
+ }
+
if (ngx_http_write_request_body(r) != NGX_OK) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}