[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Checking for disconnects within ssh_auth_response_termination()?
[Thread Prev] | [Thread Next]
- Subject: Re: Checking for disconnects within ssh_auth_response_termination()?
- From: Andreas Schneider <asn@xxxxxxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Thu, 30 Nov 2017 08:48:44 +0100
- To: libssh@xxxxxxxxxx
- Cc: Aris Adamantiadis <aris@xxxxxxxxxxxx>
On Thursday, 19 October 2017 22:48:32 CET Karl Scott wrote:
> Hey folks,
>
> I've been working with libssh for some time now, and saw that the function
> that ends up being looped over from within
> ssh_handle_packets_termination(), in src/session.c, during an
> authentication attempt is often ssh_auth_response_termination().
Aris, is the patch below OK for you?
> I noticed that in this small function:
>
>
>
>
>
>
>
>
>
>
>
>
>
> *static int ssh_auth_response_termination(void *user){ ssh_session
> session=(ssh_session)user; switch(session->auth_state){ case
> SSH_AUTH_STATE_NONE: case SSH_AUTH_STATE_KBDINT_SENT: case
> SSH_AUTH_STATE_GSSAPI_REQUEST_SENT: case SSH_AUTH_STATE_GSSAPI_TOKEN:
> case SSH_AUTH_STATE_GSSAPI_MIC_SENT: return 0; default: return
> 1; }}*
>
> We do not check for session disconnects, so if the session disconnects
> while we are looping over this, we won't stop looping until we simply time
> out.
>
> Is this intended, as maybe the session will reconnect somehow while we are
> looping in here? If it is not the case that the session might reconnect,
> may I propose this patch that I am currently using internally:
>
> --- src/auth.c 2016-02-22 23:16:40.000000000 -0800
> +++ src/auth.modified.c 2017-10-19 12:35:06.774460055 -0700
> @@ -79,6 +79,10 @@
>
> static int ssh_auth_response_termination(void *user){
> ssh_session session=(ssh_session)user;
> + if (ssh_is_connected(session) == 0) {
> + session->auth_state = SSH_AUTH_STATE_FAILED;
> + return 1; /* don't wait to time out if the session disconnects */
> + }
> switch(session->auth_state){
> case SSH_AUTH_STATE_NONE:
> case SSH_AUTH_STATE_KBDINT_SENT:
>
> I am happy to submit this patch formally, but I wanted to bounce it off of
> the community first. I may be overlooking something here. See any problems?
>
> Thank you,
>
> Karl
--
Andreas Schneider GPG-ID: CC014E3D
www.cryptomilk.org asn@xxxxxxxxxxxxxx
Archive administrator: postmaster@lists.cynapses.org