diff options
Diffstat (limited to 'cli-session.c')
-rw-r--r-- | cli-session.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/cli-session.c b/cli-session.c index bc83564..5e5af22 100644 --- a/cli-session.c +++ b/cli-session.c @@ -352,6 +352,11 @@ static void cli_session_cleanup(void) { (void)fcntl(cli_ses.stdoutcopy, F_SETFL, cli_ses.stdoutflags); (void)fcntl(cli_ses.stderrcopy, F_SETFL, cli_ses.stderrflags); + /* Don't leak */ + m_close(cli_ses.stdincopy); + m_close(cli_ses.stdoutcopy); + m_close(cli_ses.stderrcopy); + cli_tty_cleanup(); if (cli_ses.server_sig_algs) { buf_free(cli_ses.server_sig_algs); @@ -430,17 +435,18 @@ void cli_dropbear_exit(int exitcode, const char* format, va_list param) { /* Do the cleanup first, since then the terminal will be reset */ session_cleanup(); - /* Avoid printing onwards from terminal cruft */ - fprintf(stderr, "\n"); - - dropbear_log(LOG_INFO, "%s", fullmsg); - + #if DROPBEAR_FUZZ if (fuzz.do_jmp) { longjmp(fuzz.jmp, 1); } #endif + /* Avoid printing onwards from terminal cruft */ + fprintf(stderr, "\n"); + + dropbear_log(LOG_INFO, "%s", fullmsg); + exit(exitcode); } |