#211: size mismatch between struct transportpacket fields causes libssh2 to get
stuck
---------------------------------------------------------------------------------------+
Reporter:
www.google.com/accounts/o8/id?id=aitoawlhggg_yplkl7grwwpbbum-omtqud4rmna |
Owner: Peter Stuge <peter@…>
Type: defect
| Status: closed
Priority: normal
| Milestone: 1.2.8
Component: protocol
| Version: 1.2.7
Resolution: fixed
| Keywords:
Blocks:
| Blocked By:
---------------------------------------------------------------------------------------+
Comment (by
www.google.com/accounts/o8/id?id=aitoawlhggg_yplkl7grwwpbbum-omtqud4rmna):
Replying to [comment:6 www.google.com/accounts/o8/id?id
=aitoawlhggg_yplkl7grwwpbbum-omtqud4rmna]:
> Replying to [comment:5 stuge]:
> > Replying to [comment:4 www.google.com/accounts/o8/id?id
=aitoawlhggg_yplkl7grwwpbbum-omtqud4rmna]:
> > > won't this get us into trouble if there was a error after
p->total_num was set
> > > (for example while decrypting a chunk)
> >
> > Did you already look at which code paths have this problem? Do you
know if there are many >of them?
> I can't speak about there being many. The one that I had in mind was in
_libssh2_channel_read function (src/channel.c on line 1692) we have
> while (rc > 0)
> rc = _libssh2_transport_read(session);
>
> if ((rc < 0) && (rc != LIBSSH2_ERROR_EAGAIN))
> return _libssh2_error(session, rc, "transport read");
> Now if we get a decryption error in the 2nd call to
_libssh2_transort_read, we could have session->packet.total_num set to a
non zero value.
> In response to this error client code might try to free the channel
(which is what my code does). libssh2_channel_free again calls
libssh2_transport_read and we get stuck in the do {} while loop.
>
> Jasmeet
Any thoughts ?
--
Ticket URL: <http://trac.libssh2.org/ticket/211#comment:7>
libssh2 <http://trac.libssh2.org/>
C library for writing portable SSH2 clients
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel