Commit: patch 9.1.1661: Coverity finds a few issues in clientserver.c

2 views
Skip to first unread message

Christian Brabandt

unread,
Aug 20, 2025, 4:15:15 PM8/20/25
to vim...@googlegroups.com
patch 9.1.1661: Coverity finds a few issues in clientserver.c

Commit: https://github.com/vim/vim/commit/c0a3eda6ba2f7e266c110f43566c8264852a3559
Author: Foxe Chen <chen...@gmail.com>
Date: Wed Aug 20 22:00:41 2025 +0200

patch 9.1.1661: Coverity finds a few issues in clientserver.c

Problem: Coverity finds a few issues in clientserver.c
(also by Tony Mechelynck)
Solution: Fix issues and warnings (Foxe Chen)

closes: #18057

Signed-off-by: Foxe Chen <chen...@gmail.com>
Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/clientserver.c b/src/clientserver.c
index bc3fe2d3d..6ff3ad7e9 100644
--- a/src/clientserver.c
+++ b/src/clientserver.c
@@ -330,7 +330,7 @@ cmdsrv_main(
char_u *res;
int i;
char_u *sname;
- int ret;
+ int ret = -1;
int didone = FALSE;
int exiterr = 0;
char **newArgV = argv + 1;
@@ -904,19 +904,19 @@ remote_common(typval_T *argvars, typval_T *rettv, int expr)
if (clientserver_method == CLIENTSERVER_METHOD_SOCKET)
if (socket_server_send(server_name, keys, &r, &client, expr,
timeout * 1000, TRUE) < 0)
- goto stuff;
+ goto fail;
#endif
#ifdef FEAT_X11
if (clientserver_method == CLIENTSERVER_METHOD_X11)
if (serverSendToVim(X_DISPLAY, server_name, keys, &r, &w, expr, timeout,
0, TRUE) < 0)
- goto stuff;
+ goto fail;
#endif
# endif
#if !defined(MSWIN)
if (FALSE)
{
-stuff:
+fail:
#else
{
#endif
@@ -949,6 +949,7 @@ stuff:
idvar = tv_get_string_chk(&argvars[2]);
if (idvar != NULL && *idvar != NUL)
{
+ str[0] = NUL;
#ifdef MSWIN
sprintf((char *)str, PRINTF_HEX_LONG_U, (long_u)w);
#else
diff --git a/src/os_unix.c b/src/os_unix.c
index cc1db3d19..b1b7b33dc 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -9326,6 +9326,7 @@ socket_server_init(char_u *name)
vim_free(path);
return OK;
fail:
+ close(fd);
vim_free(path);
socket_server_uninit();
return FAIL;
@@ -9844,7 +9845,10 @@ socket_server_connect(char_u *name, char_u **path, int silent)
socket_fd = socket(AF_UNIX, SOCK_STREAM, 0);

if (socket_fd == -1)
- goto fail;
+ {
+ vim_free(socket_path);
+ return -1;
+ }

addr.sun_family = AF_UNIX;
vim_snprintf(addr.sun_path, sizeof(addr.sun_path), "%s", socket_path);
@@ -9856,7 +9860,9 @@ socket_server_connect(char_u *name, char_u **path, int silent)
if (!silent)
semsg(_(e_socket_server_failed_connecting), socket_path,
strerror(errno));
- goto fail;
+ close(socket_fd);
+ vim_free(socket_path);
+ return -1;
}

if (path != NULL)
@@ -9865,10 +9871,6 @@ socket_server_connect(char_u *name, char_u **path, int silent)
vim_free(socket_path);

return socket_fd;
-fail:
- close(socket_fd);
- vim_free(socket_path);
- return -1;

}

@@ -10337,7 +10339,7 @@ socket_server_exec_cmd(ss_cmd_T *cmd, int fd)
cmd->cmd_type == SS_CMD_TYPE_KEYSTROKES)
{
// Either an expression or keystrokes.
- if (socket_server_valid() && enc != NULL)
+ if (socket_server_valid() && enc != NULL && str != NULL)
{
str = serverConvert(enc, str, &to_free);

diff --git a/src/testdir/test_remote.vim b/src/testdir/test_remote.vim
index 742c8e283..af70f2217 100644
--- a/src/testdir/test_remote.vim
+++ b/src/testdir/test_remote.vim
@@ -15,6 +15,19 @@ func Verify_remote_feature_works()
enew
let buf = RunVimInTerminal('--servername XVIMTEST', {'rows': 8})
call TermWait(buf)
+
+ " For some reason when the socket server is being used, the terminal Vim never
+ " receives the `:w! XVimRemoteTest.txt` command from term_sendkeys.
+ if has('socketserver') && !has('X11')
+ if match(serverlist(), "XVIMTEST") == -1
+ call StopVimInTerminal(buf)
+ throw s:skip
+ endif
+
+ let s:remote = 1
+ return
+ endif
+
let cmd = GetVimCommandCleanTerm() .. '--serverlist'
call term_sendkeys(buf, ":r! " .. cmd .. "\<CR>")
call TermWait(buf)
diff --git a/src/version.c b/src/version.c
index 855322963..bb3810302 100644
--- a/src/version.c
+++ b/src/version.c
@@ -724,6 +724,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1661,
/**/
1660,
/**/
Reply all
Reply to author
Forward
0 new messages