This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit 104054813f4094c38ec79a7ba20dbad34d421346 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Jan 29 00:46:44 2016 +0100 sshmasterconnection.{cpp,h}: support variable number of challenge-auth-code-based prompts. --- debian/changelog | 2 ++ src/sshmasterconnection.cpp | 20 ++++++++++++++++++-- src/sshmasterconnection.h | 2 ++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 879a379..7e6ffd4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -31,6 +31,8 @@ x2goclient (4.0.5.1-0x2go1) UNRELEASED; urgency=low - sshmasterconnection.cpp: let challenge-auth-based login attempts fallback to normal password authentication if the initial challenge-auth-based attempt was unsuccessful. + - sshmasterconnection.{cpp,h}: support variable number of + challenge-auth-code-based prompts. * debian/control: - Change apache2-dev | libc6-dev build dependency back to apache2-dev only. Otherwise, apache2-dev is not installed at all, even though diff --git a/src/sshmasterconnection.cpp b/src/sshmasterconnection.cpp index 942b374..0819822 100644 --- a/src/sshmasterconnection.cpp +++ b/src/sshmasterconnection.cpp @@ -55,6 +55,10 @@ static bool isLibSshInited=false; +const QString SshMasterConnection::challenge_auth_code_prompts_[] = { + "Verification code:" +}; + #ifdef Q_OS_WIN #include <QSettings> @@ -874,8 +878,20 @@ bool SshMasterConnection::userChallengeAuth() ssh_userauth_kbdint_setanswer(my_ssh_session,0,pass.toAscii()); return userChallengeAuth(); } - if(pr=="Verification code: ") - { + + bool has_challenge_auth_code_prompt = false; + const std::size_t challenge_auth_code_prompts_size = (sizeof (challenge_auth_code_prompts_)/sizeof (*challenge_auth_code_prompts_)); + + for (std::size_t i = 0; i < challenge_auth_code_prompts_size; ++i) { + x2goDebug << "Checking against known prompt #" << i << ": " << challenge_auth_code_prompts_[i] << endl; + + if (pr == challenge_auth_code_prompts_[i]) { + has_challenge_auth_code_prompt = true; + break; + } + } + + if (has_challenge_auth_code_prompt) { #ifdef DEBUG x2goDebug<<"Verification code request"<<endl; #endif diff --git a/src/sshmasterconnection.h b/src/sshmasterconnection.h index d721eff..0136ac4 100644 --- a/src/sshmasterconnection.h +++ b/src/sshmasterconnection.h @@ -198,6 +198,8 @@ private: bool challengeAuthPasswordAccepted; QString challengeAuthVerificationCode; + static const QString challenge_auth_code_prompts_[]; + signals: void stdErr(SshProcess* caller, QByteArray data); void stdOut(SshProcess* caller, QByteArray data); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git