#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

Reply via email to