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;