[Mono-bugs] [Bug 76254][Nor] Changed - Infinite loop entered on server during SSL handhake.

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Wed Jan 18 09:40:20 EST 2006


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by sebastien at ximian.com.

http://bugzilla.ximian.com/show_bug.cgi?id=76254

--- shadow/76254	2006-01-18 09:19:21.000000000 -0500
+++ shadow/76254.tmp.13776	2006-01-18 09:40:20.000000000 -0500
@@ -1,12 +1,12 @@
 Bug#: 76254
 Product: Mono: Class Libraries
 Version: 1.1
 OS: unknown
 OS Details: Mandrake 9.2 and a realtime linux based on kernel 2.4
-Status: REOPENED   
+Status: ASSIGNED   
 Resolution: 
 Severity: Unknown
 Priority: Normal
 Component: Mono.Security
 AssignedTo: sebastien at ximian.com                            
 ReportedBy: imoir at templetech.com               
@@ -197,6 +197,49 @@
 this.protocol.ReceiveRecord(this.innerStream);
                         }
 
                         if (certRequested &&
 (this.context.ClientSettings.ClientCertificate == null))
 
+
+------- Additional Comments From sebastien at ximian.com  2006-01-18 09:40 -------
+Thanks, I'll try it - but I don't see how closing the socket will get
+it out the loop (more than the actual code). I guess LastHandshakeMsg
+is updated elsewhere in this case...
+
+I've been "playing" with a similar patch (not something I wanted to
+put in SVN) just to see where else it could "hang"...
+
+
+Index: Mono.Security.Protocol.Tls/SslServerStream.cs
+===================================================================
+--- Mono.Security.Protocol.Tls/SslServerStream.cs       (revision 55716)
++++ Mono.Security.Protocol.Tls/SslServerStream.cs       (working copy)
+@@ -226,10 +226,18 @@
+                       
+this.protocol.SendRecord(HandshakeType.ServerHelloDone);
+  
+                        // Receive client response, until the Client
+Finished message
+-                       // is received
++                       // is received. IE can be interrupted at this
+stage and never
++                       // complete the handshake
++                       DateTime complete = DateTime.Now.AddSeconds (10);
+                        while (this.context.LastHandshakeMsg !=
+HandshakeType.Finished)
+                        {
+                               
+this.protocol.ReceiveRecord(this.innerStream);
++                               if (DateTime.Now > complete)
++                               {
++                                       throw new TlsException(
++                                              
+AlertDescription.HandshakeFailiure,
++                                               "The client stopped
+the handshake.");
++                               }
+                        }
+  
+                        if (certRequested &&
+(this.context.ClientSettings.ClientCertificate == null))
+


More information about the mono-bugs mailing list