diff options
author | Andreas Schneider <mail@cynapses.org> | 2009-04-02 09:24:46 +0000 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-04-02 09:24:46 +0000 |
commit | ae4265d3048b1bd5d417980aabf1c180ab2a81e1 (patch) | |
tree | d28976955f7a1d193253f304f4676f9fb6e0bc01 /libssh/auth.c | |
parent | ee3b641fb1f4a7a1d8e78cf6d549469be6cdab21 (diff) | |
download | libssh-ae4265d3048b1bd5d417980aabf1c180ab2a81e1.tar.gz libssh-ae4265d3048b1bd5d417980aabf1c180ab2a81e1.tar.xz libssh-ae4265d3048b1bd5d417980aabf1c180ab2a81e1.zip |
Add a return value to ssh_userauth_kbdint_setanswer().
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@341 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/auth.c')
-rw-r--r-- | libssh/auth.c | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/libssh/auth.c b/libssh/auth.c index d449f71..75692a4 100644 --- a/libssh/auth.c +++ b/libssh/auth.c @@ -1017,23 +1017,33 @@ char *ssh_userauth_kbdint_getprompt(SSH_SESSION *session, unsigned int i, * \param session ssh session * \param i index number of the ith prompt * \param answer answer to give to server + * \return 0 on success, < 0 on error. */ +int ssh_userauth_kbdint_setanswer(SSH_SESSION *session, unsigned int i, + const char *answer) { + if (i > session->kbdint->nprompts) { + return -1; + } -void ssh_userauth_kbdint_setanswer(SSH_SESSION *session, unsigned int i, const char *answer){ - if (i>session->kbdint->nprompts) - return; + if (session->kbdint->answers == NULL) { + session->kbdint->answers = malloc(sizeof(char*) * session->kbdint->nprompts); if (session->kbdint->answers == NULL) { - session->kbdint->answers = malloc(sizeof(char*) * session->kbdint->nprompts); - if (session->kbdint->answers == NULL) { - return; - } - memset(session->kbdint->answers, 0, sizeof(char *) * session->kbdint->nprompts); - } - if(session->kbdint->answers[i]){ - burn(session->kbdint->answers[i]); - free(session->kbdint->answers[i]); + return -1; } - session->kbdint->answers[i]=strdup(answer); + memset(session->kbdint->answers, 0, sizeof(char *) * session->kbdint->nprompts); + } + + if (session->kbdint->answers[i]) { + burn(session->kbdint->answers[i]); + SAFE_FREE(session->kbdint->answers[i]); + } + + session->kbdint->answers[i] = strdup(answer); + if (session->kbdint->answers[i] == NULL) { + return -1; + } + + return 0; } /** @} */ |