Improve ssh_message_free().

git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@440 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
Andreas Schneider
2009-04-09 10:31:12 +00:00
parent e9a7d98eac
commit 04ab5c1b82
2 changed files with 25 additions and 32 deletions

View File

@@ -489,37 +489,31 @@ void ssh_message_free(SSH_MESSAGE *msg){
if (msg == NULL) { if (msg == NULL) {
return; return;
} }
switch(msg->type) { switch(msg->type) {
case SSH_AUTH_REQUEST: case SSH_AUTH_REQUEST:
if(msg->auth_request.username) SAFE_FREE(msg->auth_request.username);
free(msg->auth_request.username);
if (msg->auth_request.password) { if (msg->auth_request.password) {
memset(msg->auth_request.password,0,strlen(msg->auth_request.password)); memset(msg->auth_request.password, 0,
free(msg->auth_request.password); strlen(msg->auth_request.password));
SAFE_FREE(msg->auth_request.password);
} }
break; break;
case SSH_CHANNEL_REQUEST_OPEN: case SSH_CHANNEL_REQUEST_OPEN:
if(msg->channel_request_open.originator) SAFE_FREE(msg->channel_request_open.originator);
free(msg->channel_request_open.originator); SAFE_FREE(msg->channel_request_open.destination);
if(msg->channel_request_open.destination)
free(msg->channel_request_open.destination);
break; break;
case SSH_CHANNEL_REQUEST: case SSH_CHANNEL_REQUEST:
if(msg->channel_request.TERM) SAFE_FREE(msg->channel_request.TERM);
free(msg->channel_request.TERM); SAFE_FREE(msg->channel_request.modes);
if(msg->channel_request.modes) SAFE_FREE(msg->channel_request.var_name);
free(msg->channel_request.modes); SAFE_FREE(msg->channel_request.var_value);
if(msg->channel_request.var_name) SAFE_FREE(msg->channel_request.command);
free(msg->channel_request.var_name); SAFE_FREE(msg->channel_request.subsystem);
if(msg->channel_request.var_value)
free(msg->channel_request.var_value);
if(msg->channel_request.command)
free(msg->channel_request.command);
if(msg->channel_request.subsystem)
free(msg->channel_request.subsystem);
break; break;
} }
memset(msg, 0, sizeof(*msg)); memset(msg, 0, sizeof(*msg));
SAFE_FREE(msg);
} }
/** @} /** @}
*/ */

View File

@@ -128,7 +128,6 @@ void ssh_cleanup(SSH_SESSION *session) {
private_key_free(session->dsa_key); private_key_free(session->dsa_key);
private_key_free(session->rsa_key); private_key_free(session->rsa_key);
ssh_message_free(session->ssh_message); ssh_message_free(session->ssh_message);
SAFE_FREE(session->ssh_message);
ssh_options_free(session->options); ssh_options_free(session->options);
/* burn connection, it could hang sensitive datas */ /* burn connection, it could hang sensitive datas */