diff options
author | Andreas Schneider <mail@cynapses.org> | 2009-04-09 10:31:12 +0000 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-04-09 10:31:12 +0000 |
commit | 04ab5c1b821d775ed3d16536ad0ce757c3544bfd (patch) | |
tree | bd1d6e18106902e14024e098c63d788f3fbb3c00 /libssh/messages.c | |
parent | e9a7d98eaccf6a361d77505c303df15e4e585919 (diff) | |
download | libssh-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.c | 56 |
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); } /** @} */ |