Improve kbdint_free.

git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@638 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
Andreas Schneider
2009-04-29 09:57:12 +00:00
parent 4cc2acda3a
commit c26fb22122

View File

@@ -938,30 +938,35 @@ static struct ssh_kbdint *kbdint_new(void) {
} }
static void kbdint_free(struct ssh_kbdint *kbd){ static void kbdint_free(struct ssh_kbdint *kbd) {
int i,n=kbd->nprompts; int i, n;
if(kbd->name)
free(kbd->name); if (kbd == NULL) {
if(kbd->instruction) return;
free(kbd->instruction); }
if(kbd->prompts){
for(i=0;i<n;++i){ 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]); burn(kbd->prompts[i]);
free(kbd->prompts[i]); SAFE_FREE(kbd->prompts[i]);
} }
free(kbd->prompts); SAFE_FREE(kbd->prompts);
} }
if(kbd->answers){ if (kbd->answers) {
for(i=0;i<n;++i){ for (i = 0; i < n; i++) {
burn(kbd->answers[i]); burn(kbd->answers[i]);
free(kbd->answers[i]); SAFE_FREE(kbd->answers[i]);
} }
free(kbd->answers); SAFE_FREE(kbd->answers);
} }
if(kbd->echo){
free(kbd->echo); SAFE_FREE(kbd);
}
free(kbd);
} }
static void kbdint_clean(struct ssh_kbdint *kbd){ static void kbdint_clean(struct ssh_kbdint *kbd){