diff options
author | Andreas Schneider <mail@cynapses.org> | 2009-04-29 10:04:32 +0000 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-04-29 10:04:32 +0000 |
commit | 84629a394e635e38c063af291857a9f25a78b633 (patch) | |
tree | 4ddb2cbee79327726676b9fef104b07a52c7ee7e /libssh/auth.c | |
parent | c26fb22122f9737e6bb7fbffa3d53e2152de545d (diff) | |
download | libssh-84629a394e635e38c063af291857a9f25a78b633.tar.gz libssh-84629a394e635e38c063af291857a9f25a78b633.tar.xz libssh-84629a394e635e38c063af291857a9f25a78b633.zip |
Improve kbdint_clean.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@639 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/auth.c')
-rw-r--r-- | libssh/auth.c | 57 |
1 files changed, 28 insertions, 29 deletions
diff --git a/libssh/auth.c b/libssh/auth.c index 65badc6..83956cb 100644 --- a/libssh/auth.c +++ b/libssh/auth.c @@ -969,37 +969,36 @@ static void kbdint_free(struct ssh_kbdint *kbd) { SAFE_FREE(kbd); } -static void kbdint_clean(struct ssh_kbdint *kbd){ - int i,n=kbd->nprompts; - if(kbd->name){ - free(kbd->name); - kbd->name=NULL; - } - if(kbd->instruction){ - free(kbd->instruction); - kbd->instruction=NULL; - } - if(kbd->prompts){ - for(i=0;i<n;++i){ - burn(kbd->prompts[i]); - free(kbd->prompts[i]); - } - free(kbd->prompts); - kbd->prompts=NULL; - } - if(kbd->answers){ - for(i=0;i<n;++i){ - burn(kbd->answers[i]); - free(kbd->answers[i]); - } - free(kbd->answers); - kbd->answers=NULL; +static void kbdint_clean(struct ssh_kbdint *kbd) { + int i, n; + + if (kbd == NULL) { + return; + } + + n = kbd->nprompts; + + SAFE_FREE(kbd->name); + SAFE_FREE(kbd->instruction); + SAFE_FREE(kbd->echo); + + if (kbd->prompts) { + for (i = 0; i < n; i++) { + burn(kbd->prompts[i]); + SAFE_FREE(kbd->prompts[i]); } - if(kbd->echo){ - free(kbd->echo); - kbd->echo=NULL; + SAFE_FREE(kbd->prompts); + } + + if (kbd->answers) { + for (i = 0; i < n; i++) { + burn(kbd->answers[i]); + SAFE_FREE(kbd->answers[i]); } - kbd->nprompts=0; + SAFE_FREE(kbd->answers); + } + + kbd->nprompts = 0; } /* this function sends the first packet as explained in section 3.1 |