diff options
author | Andrew Clayton <a.clayton@nginx.com> | 2024-02-19 15:20:51 +0000 |
---|---|---|
committer | Andrew Clayton <a.clayton@nginx.com> | 2024-02-19 22:02:49 +0000 |
commit | 30b410e49098c5016b9295263a15c479aec77e86 (patch) | |
tree | 1f4a24e6491230dfdb831d4443c58b9da0269d01 /src | |
parent | 0c98353091e6c95f6a70a461d0146b7872a8f14d (diff) | |
download | unit-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.c | 7 |
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); } |