diff options
author | Matt Johnston <matt@ucc.asn.au> | 2017-05-10 00:20:33 +0800 |
---|---|---|
committer | Matt Johnston <matt@ucc.asn.au> | 2017-05-10 00:20:33 +0800 |
commit | 2d48286b1063a863721f6562ef6d337dedb78caf (patch) | |
tree | 78b89e8d8320bd98d205829c90e2f5af13fad1b0 | |
parent | bd3c551ce33c41fc623b38ed7bb5e3586ac3f4c5 (diff) | |
download | dropbear-2d48286b1063a863721f6562ef6d337dedb78caf.tar.gz |
free forced_command
-rw-r--r-- | svr-authpubkeyoptions.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/svr-authpubkeyoptions.c b/svr-authpubkeyoptions.c index 9bdf99d..55b78ba 100644 --- a/svr-authpubkeyoptions.c +++ b/svr-authpubkeyoptions.c @@ -95,6 +95,7 @@ void svr_pubkey_set_forced_command(struct ChanSess *chansess) { if (chansess->cmd) { /* original_command takes ownership */ chansess->original_command = chansess->cmd; + chansess->cmd = NULL; } else { chansess->original_command = m_strdup(""); } @@ -108,6 +109,9 @@ void svr_pubkey_set_forced_command(struct ChanSess *chansess) { /* Free potential public key options */ void svr_pubkey_options_cleanup() { if (ses.authstate.pubkey_options) { + if (ses.authstate.pubkey_options->forced_command) { + m_free(ses.authstate.pubkey_options->forced_command); + } m_free(ses.authstate.pubkey_options); ses.authstate.pubkey_options = NULL; } @@ -200,8 +204,7 @@ next_option: bad_option: ret = DROPBEAR_FAILURE; - m_free(ses.authstate.pubkey_options); - ses.authstate.pubkey_options = NULL; + svr_pubkey_options_cleanup(); dropbear_log(LOG_WARNING, "Bad public key options at %s:%d", filename, line_num); end: |