summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2020-10-28 00:01:46 +0300
committerMax Romanov <max.romanov@nginx.com>2020-10-28 00:01:46 +0300
commit38a9027fe54edcfc8157174a8ce575ed7acefa79 (patch)
tree32f08dbcc73e02d20e4b14bba884bc7197732cc8
parent00561a961f8c7727556271e424e1e425ac9a88ce (diff)
downloadunit-38a9027fe54edcfc8157174a8ce575ed7acefa79.tar.gz
unit-38a9027fe54edcfc8157174a8ce575ed7acefa79.tar.bz2
Router: checking a buffer before accessing its memory fields.
This fixes the router's crash on buildbot; the reason was an unexpected 'last' response from the application to the router arriving before the response headers. The last buffer is not a memory buffer, so the result of accessing memory fields is unpredictable. The unexpected 'last' message was caused by an error in libunit; fixed in fee8fd855a00.
-rw-r--r--src/nxt_router.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/nxt_router.c b/src/nxt_router.c
index bbd9a54e..6277bd47 100644
--- a/src/nxt_router.c
+++ b/src/nxt_router.c
@@ -3787,7 +3787,7 @@ nxt_router_response_ready_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg,
nxt_http_request_send_body(task, r, NULL);
} else {
- size_t b_size = nxt_buf_mem_used_size(&b->mem);
+ size_t b_size = nxt_buf_is_mem(b) ? nxt_buf_mem_used_size(&b->mem) : 0;
if (nxt_slow_path(b_size < sizeof(*resp))) {
goto fail;