diff --git a/src/agent.c b/src/agent.c index 59a6774..31145dc 100644 --- a/src/agent.c +++ b/src/agent.c @@ -1395,6 +1395,7 @@ void wolfSSH_AGENT_free(WOLFSSH_AGENT_CTX* agent) if (agent != NULL) { if (agent->msg != NULL) WFREE(agent->msg, agent->heap, DYNTYPE_AGENT_BUFFER); + wc_FreeRng(&agent->rng); wolfSSH_AGENT_ID_list_free(agent->idList, heap); WMEMSET(agent, 0, sizeof(*agent)); WFREE(agent, heap, DYNTYPE_AGENT); diff --git a/src/ssh.c b/src/ssh.c index d4652ca..0f6bf1b 100644 --- a/src/ssh.c +++ b/src/ssh.c @@ -591,6 +591,9 @@ int wolfSSH_accept(WOLFSSH* ssh) ssh->ctx->agentCb(WOLFSSH_AGENT_LOCAL_SETUP, ssh->agentCbCtx); } + if (ssh->agent != NULL) + wolfSSH_AGENT_free(ssh->agent); + ssh->agent = newAgent; } #endif /* WOLFSSH_AGENT */ ssh->acceptState = ACCEPT_CLIENT_SESSION_ESTABLISHED; diff --git a/src/wolfsftp.c b/src/wolfsftp.c index 66b166e..3b8da83 100644 --- a/src/wolfsftp.c +++ b/src/wolfsftp.c @@ -5643,6 +5643,7 @@ static int wolfSSH_SFTP_GetHandle(WOLFSSH* ssh, byte* handle, word32* handleSz) case STATE_GET_HANDLE_CLEANUP: WLOG(WS_LOG_SFTP, "SFTP GET HANDLE STATE: CLEANUP"); + wolfSSH_SFTP_buffer_free(ssh, &state->buffer); if (ssh->getHandleState != NULL) { WFREE(ssh->getHandleState, ssh->ctx->heap, DYNTYPE_SFTP_STATE);