summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorAndrew Clayton <a.clayton@nginx.com>2024-02-19 15:20:51 +0000
committerAndrew Clayton <a.clayton@nginx.com>2024-02-19 22:02:49 +0000
commit30b410e49098c5016b9295263a15c479aec77e86 (patch)
tree1f4a24e6491230dfdb831d4443c58b9da0269d01 /src
parent0c98353091e6c95f6a70a461d0146b7872a8f14d (diff)
downloadunit-30b410e49098c5016b9295263a15c479aec77e86.tar.gz
unit-30b410e49098c5016b9295263a15c479aec77e86.tar.bz2
Avoid a segfault in nxt_conn_io_sendbuf()
This is a simple temporary fix (doesn't address the underlying problem) for an issue reported by a user on GitHub whereby downloading of files from a PHP application would cause the router process to crash. This is actually a generic problem that will affect anything sending data via nxt_unit_response_write(). This is just a simple fix for the 1.32 release, after which the full correct fix will be worked out. Link: <https://github.com/nginx/unit/issues/1125> Reported-by: rustedsword <https://github.com/rustedsword> Co-developed-by: rustedsword <https://github.com/rustedsword> Tested-by: rustedsword <https://github.com/rustedsword> Tested-by: Andrew Clayton <a.clayton@nginx.com> Reviewed-by: Zhidao Hong <z.hong@f5.com> Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
Diffstat (limited to 'src')
-rw-r--r--src/nxt_conn_write.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/nxt_conn_write.c b/src/nxt_conn_write.c
index 714a3e15..7d0a579f 100644
--- a/src/nxt_conn_write.c
+++ b/src/nxt_conn_write.c
@@ -172,6 +172,13 @@ nxt_conn_io_sendbuf(nxt_task_t *task, nxt_sendbuf_t *sb)
return 0;
}
+ /*
+ * XXX Temporary fix for <https://github.com/nginx/unit/issues/1125>
+ */
+ if (niov == 0 && sb->buf == NULL) {
+ return 0;
+ }
+
if (niov == 0 && nxt_buf_is_file(sb->buf)) {
return nxt_conn_io_sendfile(task, sb);
}