Memory leaks, from Gang Fan in GitHub issue 1453.
authornicm <nicm@openbsd.org>
Mon, 27 Aug 2018 11:03:34 +0000 (11:03 +0000)
committernicm <nicm@openbsd.org>
Mon, 27 Aug 2018 11:03:34 +0000 (11:03 +0000)
usr.bin/tmux/cmd-if-shell.c
usr.bin/tmux/cmd-load-buffer.c
usr.bin/tmux/cmd-run-shell.c
usr.bin/tmux/format.c

index 8715bda..4af22e0 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-if-shell.c,v 1.59 2018/08/23 15:45:05 nicm Exp $ */
+/* $OpenBSD: cmd-if-shell.c,v 1.60 2018/08/27 11:03:34 nicm Exp $ */
 
 /*
  * Copyright (c) 2009 Tiago Cunha <me@tiagocunha.org>
@@ -120,8 +120,13 @@ cmd_if_shell_exec(struct cmd *self, struct cmdq_item *item)
                cdata->item = NULL;
        memcpy(&cdata->mouse, &shared->mouse, sizeof cdata->mouse);
 
-       job_run(shellcmd, s, server_client_get_cwd(item->client, s), NULL,
-           cmd_if_shell_callback, cmd_if_shell_free, cdata, 0);
+       if (job_run(shellcmd, s, server_client_get_cwd(item->client, s), NULL,
+           cmd_if_shell_callback, cmd_if_shell_free, cdata, 0) == NULL) {
+               cmdq_error(item, "failed to run command: %s", shellcmd);
+               free(shellcmd);
+               free(cdata);
+               return (CMD_RETURN_ERROR);
+       }
        free(shellcmd);
 
        if (args_has(args, 'b'))
index 5309dc8..8e77995 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-load-buffer.c,v 1.53 2018/07/31 13:06:44 nicm Exp $ */
+/* $OpenBSD: cmd-load-buffer.c,v 1.54 2018/08/27 11:03:34 nicm Exp $ */
 
 /*
  * Copyright (c) 2009 Tiago Cunha <me@tiagocunha.org>
@@ -87,6 +87,7 @@ cmd_load_buffer_exec(struct cmd *self, struct cmdq_item *item)
                if (error != 0) {
                        cmdq_error(item, "-: %s", cause);
                        free(cause);
+                       free(cdata);
                        return (CMD_RETURN_ERROR);
                }
                return (CMD_RETURN_WAIT);
index a37ae46..cbb4a88 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-run-shell.c,v 1.54 2018/08/23 15:45:05 nicm Exp $ */
+/* $OpenBSD: cmd-run-shell.c,v 1.55 2018/08/27 11:03:34 nicm Exp $ */
 
 /*
  * Copyright (c) 2009 Tiago Cunha <me@tiagocunha.org>
@@ -102,8 +102,12 @@ cmd_run_shell_exec(struct cmd *self, struct cmdq_item *item)
        if (!args_has(args, 'b'))
                cdata->item = item;
 
-       job_run(cdata->cmd, s, server_client_get_cwd(item->client, s), NULL,
-           cmd_run_shell_callback, cmd_run_shell_free, cdata, 0);
+       if (job_run(cdata->cmd, s, server_client_get_cwd(item->client, s), NULL,
+           cmd_run_shell_callback, cmd_run_shell_free, cdata, 0) == NULL) {
+               cmdq_error(item, "failed to run command: %s", cdata->cmd);
+               free(cdata);
+               return (CMD_RETURN_ERROR);
+       }
 
        if (args_has(args, 'b'))
                return (CMD_RETURN_NORMAL);
index 9154023..e158941 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: format.c,v 1.161 2018/08/26 09:28:42 nicm Exp $ */
+/* $OpenBSD: format.c,v 1.162 2018/08/27 11:03:34 nicm Exp $ */
 
 /*
  * Copyright (c) 2011 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -1086,8 +1086,10 @@ format_replace(struct format_tree *ft, const char *key, size_t keylen,
                                found = xstrdup("");
                        }
                }
-               if (format_choose(ptr + 1, &left, &right) != 0)
+               if (format_choose(ptr + 1, &left, &right) != 0) {
+                       free(found);
                        goto fail;
+               }
 
                if (format_true(found))
                        value = format_expand(ft, left);