Do not leak screen in popups, GitHub issue 3492.
authornicm <nicm@openbsd.org>
Wed, 15 Mar 2023 19:23:22 +0000 (19:23 +0000)
committernicm <nicm@openbsd.org>
Wed, 15 Mar 2023 19:23:22 +0000 (19:23 +0000)
usr.bin/tmux/cmd-display-menu.c
usr.bin/tmux/popup.c

index dc7bc21..da30e52 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-display-menu.c,v 1.38 2023/01/20 21:36:00 nicm Exp $ */
+/* $OpenBSD: cmd-display-menu.c,v 1.39 2023/03/15 19:23:22 nicm Exp $ */
 
 /*
  * Copyright (c) 2019 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -276,6 +276,7 @@ cmd_display_menu_get_position(struct client *tc, struct cmdq_item *item,
        log_debug("%s: -y: %s = %s = %u (-h %u)", __func__, yp, p, *py, h);
        free(p);
 
+       format_free(ft);
        return (1);
 }
 
@@ -470,11 +471,13 @@ cmd_display_popup_exec(struct cmd *self, struct cmdq_item *item)
                cmd_free_argv(argc, argv);
                if (env != NULL)
                        environ_free(env);
+               free(cwd);
                free(title);
                return (CMD_RETURN_NORMAL);
        }
        if (env != NULL)
                environ_free(env);
+       free(cwd);
        free(title);
        cmd_free_argv(argc, argv);
        return (CMD_RETURN_WAIT);
index e69ae5e..ad2e1c8 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: popup.c,v 1.47 2023/01/20 21:36:00 nicm Exp $ */
+/* $OpenBSD: popup.c,v 1.48 2023/03/15 19:23:22 nicm Exp $ */
 
 /*
  * Copyright (c) 2020 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -253,6 +253,7 @@ popup_draw_cb(struct client *c, void *data, struct screen_redraw_ctx *rctx)
                tty_draw_line(tty, &s, 0, i, pd->sx, px, py + i, &defaults,
                    palette);
        }
+       screen_free(&s);
        if (pd->md != NULL) {
                c->overlay_check = NULL;
                c->overlay_data = NULL;