summaryrefslogtreecommitdiffstats
path: root/libssh/auth.c
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2009-04-29 10:04:32 +0000
committerAndreas Schneider <mail@cynapses.org>2009-04-29 10:04:32 +0000
commit84629a394e635e38c063af291857a9f25a78b633 (patch)
tree4ddb2cbee79327726676b9fef104b07a52c7ee7e /libssh/auth.c
parentc26fb22122f9737e6bb7fbffa3d53e2152de545d (diff)
downloadlibssh-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.c57
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