[Pidgin] #5910: Jabber - protocol connection for server broken while sending too long buffer over SASL-encrypted channel

Pidgin trac at pidgin.im
Fri Jun 6 16:35:48 EDT 2008


#5910: Jabber - protocol connection for server broken while sending too long
buffer over SASL-encrypted channel
----------------------+-----------------------------------------------------
  Reporter:  geekkoo  |       Owner:  nwalp                                   
      Type:  patch    |      Status:  new                                     
  Priority:  minor    |   Milestone:                                          
 Component:  XMPP     |     Version:  2.4.1                                   
Resolution:           |    Keywords:  XMPP, Jabber, encryption, security layer
   Pending:  0        |  
----------------------+-----------------------------------------------------
Comment (by datallah):

 Replying to [comment:3 geekkoo]:
 > Once more. I have a Jabberd2 server compiled with Cyrus-SASL support. I
 use GSSAPI mechanism. Cyrus-SASL  with GSSAPI or DIGEST-MD5 mechanisms
 supports security layers (in contrast to default GSASL, which does not
 support security layers). So once SSF was negotiated the client and the
 server agree upon max message length (SASL_MAXOUTBUF). In case of Jabberd2
 it is 1024 (it is jabberd2 limit not pidgin's). So both client and server
 split messages according to this length and encrypt them.

 I'm with you until here, everything so far makes sense.

 > Once the message can not be send at once by pidgin it is split once
 more. But jabberd2 server can not decrypt such broken messages. Here may
 be two possible ways - server waits for the end of the message and
 concatenates all parts together or server waits for the message to be
 repeated.

 This doesn't seem at all correct - there is no guarantee that even if the
 client sends stuff in one chunk that the server will be able to read it in
 the same way.

 > Jabberd2 seems to choose the second case. In the way as the things are
 now the connection just breaks (with short timeout) after such a broken
 packet is sent to server. If I apply my hack the connection survives.

 I think that this appears to work is something of a coincidence - it
 sounds like a server bug.

 There is no provision for this type of thing that I can see in the RFC -
 it wouldn't make much sense.

 > I just want some advice how this situation should be handled according
 to protocol specification or how it is handled by other servers (OpenFire
 for example).

 As I mentioned above, I see nothing in the RFC that indicates resending is
 a reasonable thing to do.
 I have no idea how it is handled by OpenFire, you'd have to ask the
 OpenFire people or look at the source.

-- 
Ticket URL: <http://developer.pidgin.im/ticket/5910#comment:4>
Pidgin <http://pidgin.im>
Pidgin


More information about the Tracker mailing list