From 1ddccf2683878b6cc78d16f7a99ddecd42302f18 Mon Sep 17 00:00:00 2001 From: peterc-s Date: Tue, 22 Oct 2024 14:42:42 +0100 Subject: [PATCH] Fix use after free and reintroduce code from earlier commit --- src/main.zig | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main.zig b/src/main.zig index 66aad1b..2944a8b 100644 --- a/src/main.zig +++ b/src/main.zig @@ -704,6 +704,9 @@ pub fn main() !void { const password_text = try allocator.dupeZ(u8, password.text.items); defer allocator.free(password_text); + // Give up TTY + _ = termbox.tb_shutdown(); + session_pid = try std.posix.fork(); if (session_pid == 0) { const current_environment = session.label.list.items[session.label.current]; @@ -718,6 +721,13 @@ pub fn main() !void { session_pid = -1; } + // Take back TTY + _ = termbox.tb_init(); + _ = termbox.tb_set_output_mode(termbox.TB_OUTPUT_NORMAL); + + // Reinitialise buffer to avoid use after free + buffer = TerminalBuffer.init(config, labels_max_length, random); + const auth_err = shared_err.readError(); if (auth_err) |err| { auth_fails += 1;