aboutsummaryrefslogtreecommitdiff
path: root/libssh/messages.c
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2009-04-09 10:31:12 +0000
committerAndreas Schneider <mail@cynapses.org>2009-04-09 10:31:12 +0000
commit04ab5c1b821d775ed3d16536ad0ce757c3544bfd (patch)
treebd1d6e18106902e14024e098c63d788f3fbb3c00 /libssh/messages.c
parente9a7d98eaccf6a361d77505c303df15e4e585919 (diff)
downloadlibssh-04ab5c1b821d775ed3d16536ad0ce757c3544bfd.tar.gz
libssh-04ab5c1b821d775ed3d16536ad0ce757c3544bfd.tar.xz
libssh-04ab5c1b821d775ed3d16536ad0ce757c3544bfd.zip
Improve ssh_message_free().
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@440 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/messages.c')
-rw-r--r--libssh/messages.c56
1 files changed, 25 insertions, 31 deletions
diff --git a/libssh/messages.c b/libssh/messages.c
index 19f5a00..e9ec273 100644
--- a/libssh/messages.c
+++ b/libssh/messages.c
@@ -489,37 +489,31 @@ void ssh_message_free(SSH_MESSAGE *msg){
if (msg == NULL) {
return;
}
- switch(msg->type){
- case SSH_AUTH_REQUEST:
- if(msg->auth_request.username)
- free(msg->auth_request.username);
- if(msg->auth_request.password){
- memset(msg->auth_request.password,0,strlen(msg->auth_request.password));
- free(msg->auth_request.password);
- }
- break;
- case SSH_CHANNEL_REQUEST_OPEN:
- if(msg->channel_request_open.originator)
- free(msg->channel_request_open.originator);
- if(msg->channel_request_open.destination)
- free(msg->channel_request_open.destination);
- break;
- case SSH_CHANNEL_REQUEST:
- if(msg->channel_request.TERM)
- free(msg->channel_request.TERM);
- if(msg->channel_request.modes)
- free(msg->channel_request.modes);
- if(msg->channel_request.var_name)
- free(msg->channel_request.var_name);
- 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;
- }
- memset(msg,0,sizeof(*msg));
+
+ switch(msg->type) {
+ case SSH_AUTH_REQUEST:
+ SAFE_FREE(msg->auth_request.username);
+ if (msg->auth_request.password) {
+ memset(msg->auth_request.password, 0,
+ strlen(msg->auth_request.password));
+ SAFE_FREE(msg->auth_request.password);
+ }
+ break;
+ case SSH_CHANNEL_REQUEST_OPEN:
+ SAFE_FREE(msg->channel_request_open.originator);
+ SAFE_FREE(msg->channel_request_open.destination);
+ break;
+ case SSH_CHANNEL_REQUEST:
+ SAFE_FREE(msg->channel_request.TERM);
+ SAFE_FREE(msg->channel_request.modes);
+ SAFE_FREE(msg->channel_request.var_name);
+ SAFE_FREE(msg->channel_request.var_value);
+ SAFE_FREE(msg->channel_request.command);
+ SAFE_FREE(msg->channel_request.subsystem);
+ break;
+ }
+ memset(msg, 0, sizeof(*msg));
+ SAFE_FREE(msg);
}
/** @}
*/