static void svr_session_cleanup(void) { /* free potential public key options */ svr_pubkey_options_cleanup(); m_free(svr_ses.addrstring); m_free(svr_ses.remotehost); m_free(svr_ses.childpids); svr_ses.childpidsize = 0; }
/* failure exit - format must be <= 100 chars */ void svr_dropbear_exit(int exitcode, const char* format, va_list param) { char fmtbuf[300]; if (!sessinitdone) { /* before session init */ snprintf(fmtbuf, sizeof(fmtbuf), "premature exit: %s", format); } else if (ses.authstate.authdone) { /* user has authenticated */ snprintf(fmtbuf, sizeof(fmtbuf), "exit after auth (%s): %s", ses.authstate.pw_name, format); } else if (ses.authstate.pw_name) { /* we have a potential user */ snprintf(fmtbuf, sizeof(fmtbuf), "exit before auth (user '%s', %d fails): %s", ses.authstate.pw_name, ses.authstate.failcount, format); } else { /* before userauth */ snprintf(fmtbuf, sizeof(fmtbuf), "exit before auth: %s", format); } _dropbear_log(LOG_INFO, fmtbuf, param); #ifdef __uClinux__ /* only the main server process should cleanup - we don't want * forked children doing that */ if (svr_ses.server_pid == getpid()) #else if (1) #endif { /* free potential public key options */ svr_pubkey_options_cleanup(); /* must be after we've done with username etc */ common_session_cleanup(); } exit(exitcode); }
static void svr_session_cleanup(void) { /* free potential public key options */ svr_pubkey_options_cleanup(); }