summaryrefslogtreecommitdiffhomepage
path: root/cli-session.c
diff options
context:
space:
mode:
Diffstat (limited to 'cli-session.c')
-rw-r--r--cli-session.c16
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);
}