aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ui_client.c
diff options
context:
space:
mode:
authorSean Dewar <6256228+seandewar@users.noreply.github.com>2024-03-04 13:15:04 +0000
committerGitHub <noreply@github.com>2024-03-04 13:15:04 +0000
commit633bf61d3b03b2edac4526ecbe73e1485f68c1b1 (patch)
tree4260dcab3f33825b97310e667be9dbaf854a70c8 /src/nvim/ui_client.c
parenta8131aee9ecc640415903d590b15863ce1c99112 (diff)
downloadrneovim-633bf61d3b03b2edac4526ecbe73e1485f68c1b1.tar.gz
rneovim-633bf61d3b03b2edac4526ecbe73e1485f68c1b1.tar.bz2
rneovim-633bf61d3b03b2edac4526ecbe73e1485f68c1b1.zip
fix(ui_client): check return value of channel_job_start (#27729)
Problem: null pointer member access in ui_client_start_server if channel_job_start returns NULL. Solution: check for it, return 0 in that case (which is already used to indicate failure and is handled by main). Happened on Linux when trying to run Nvim in an old gdbserver instance after having rebuilt Nvim since. This gave E903 (the nvim binary was deleted, so " (deleted)" appears as a suffix in the `v:progpath`, making it invalid), then ASAN complains due to the NPD; instead it now then prints "Failed to start Nvim server!", as expected.
Diffstat (limited to 'src/nvim/ui_client.c')
-rw-r--r--src/nvim/ui_client.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/nvim/ui_client.c b/src/nvim/ui_client.c
index 2bb5ee16b3..4f36cae4b2 100644
--- a/src/nvim/ui_client.c
+++ b/src/nvim/ui_client.c
@@ -62,6 +62,9 @@ uint64_t ui_client_start_server(int argc, char **argv)
CALLBACK_READER_INIT, on_err, CALLBACK_NONE,
false, true, true, false, kChannelStdinPipe,
NULL, 0, 0, NULL, &exit_status);
+ if (!channel) {
+ return 0;
+ }
// If stdin is not a pty, it is forwarded to the client.
// Replace stdin in the TUI process with the tty fd.