mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-07-31 00:03:07 +03:00
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
This commit is contained in:
@ -57,7 +57,7 @@ echo "Usage: `basename $0` [--prefix /install_prefix|--build [debug|final]|--cle
|
|||||||
|
|
||||||
cd ${BUILDDIR}
|
cd ${BUILDDIR}
|
||||||
|
|
||||||
OPTIONS="--graphviz=${BUILDDIR}/libssh.dot -DUNIT_TESTING=ON -DWITH_STATIC_LIB=ON"
|
OPTIONS="--graphviz=${BUILDDIR}/libssh.dot -DUNIT_TESTING=ON"
|
||||||
|
|
||||||
while test -n "$1"; do
|
while test -n "$1"; do
|
||||||
PARAM="$1"
|
PARAM="$1"
|
||||||
|
@ -371,7 +371,8 @@ int ssh_userauth_kbdint_getnprompts(SSH_SESSION *session);
|
|||||||
char *ssh_userauth_kbdint_getname(SSH_SESSION *session);
|
char *ssh_userauth_kbdint_getname(SSH_SESSION *session);
|
||||||
char *ssh_userauth_kbdint_getinstruction(SSH_SESSION *session);
|
char *ssh_userauth_kbdint_getinstruction(SSH_SESSION *session);
|
||||||
char *ssh_userauth_kbdint_getprompt(SSH_SESSION *session, unsigned int i, char *echo);
|
char *ssh_userauth_kbdint_getprompt(SSH_SESSION *session, unsigned int i, char *echo);
|
||||||
void ssh_userauth_kbdint_setanswer(SSH_SESSION *session, unsigned int i, const char *answer);
|
int ssh_userauth_kbdint_setanswer(SSH_SESSION *session, unsigned int i,
|
||||||
|
const char *answer);
|
||||||
|
|
||||||
|
|
||||||
/* init.c */
|
/* init.c */
|
||||||
|
@ -1017,23 +1017,33 @@ char *ssh_userauth_kbdint_getprompt(SSH_SESSION *session, unsigned int i,
|
|||||||
* \param session ssh session
|
* \param session ssh session
|
||||||
* \param i index number of the ith prompt
|
* \param i index number of the ith prompt
|
||||||
* \param answer answer to give to server
|
* \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 (session->kbdint->answers == NULL) {
|
||||||
if (i>session->kbdint->nprompts)
|
session->kbdint->answers = malloc(sizeof(char*) * session->kbdint->nprompts);
|
||||||
return;
|
|
||||||
if (session->kbdint->answers == NULL) {
|
if (session->kbdint->answers == NULL) {
|
||||||
session->kbdint->answers = malloc(sizeof(char*) * session->kbdint->nprompts);
|
return -1;
|
||||||
if (session->kbdint->answers == NULL) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
memset(session->kbdint->answers, 0, sizeof(char *) * session->kbdint->nprompts);
|
|
||||||
}
|
}
|
||||||
if(session->kbdint->answers[i]){
|
memset(session->kbdint->answers, 0, sizeof(char *) * session->kbdint->nprompts);
|
||||||
burn(session->kbdint->answers[i]);
|
}
|
||||||
free(session->kbdint->answers[i]);
|
|
||||||
}
|
if (session->kbdint->answers[i]) {
|
||||||
session->kbdint->answers[i]=strdup(answer);
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
8
sample.c
8
sample.c
@ -385,11 +385,15 @@ static int auth_kbdint(SSH_SESSION *session){
|
|||||||
buffer[sizeof(buffer)-1]=0;
|
buffer[sizeof(buffer)-1]=0;
|
||||||
if((ptr=strchr(buffer,'\n')))
|
if((ptr=strchr(buffer,'\n')))
|
||||||
*ptr=0;
|
*ptr=0;
|
||||||
ssh_userauth_kbdint_setanswer(session,i,buffer);
|
if (ssh_userauth_kbdint_setanswer(session,i,buffer) < 0) {
|
||||||
|
return SSH_AUTH_ERROR;
|
||||||
|
}
|
||||||
memset(buffer,0,strlen(buffer));
|
memset(buffer,0,strlen(buffer));
|
||||||
} else {
|
} else {
|
||||||
ptr=getpass(prompt);
|
ptr=getpass(prompt);
|
||||||
ssh_userauth_kbdint_setanswer(session,i,ptr);
|
if (ssh_userauth_kbdint_setanswer(session,i,ptr) < 0) {
|
||||||
|
return SSH_AUTH_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err=ssh_userauth_kbdint(session,NULL,NULL);
|
err=ssh_userauth_kbdint(session,NULL,NULL);
|
||||||
|
Reference in New Issue
Block a user