There appears to be a bug in s3_read_bytes when trying to make a
connection to a port open for a non-tls service. As the comment
indicates, tls client just ignores records that it doesn't know about,
but the current code does not try to get a new record and ends up
looping on the same record. 

The relatively straightforward patch against 0.9.6b (I checked that
the just released 0.9.6c has the same problem) forces a check for a
new record at the top of the record parsing loop.

I'm not on the dev list (anymore), but if you could cc me on any
discussion I would appreciate it.

\p
---
The worst thing in this world, next to anarchy, is government
                --- Reverend Henry Ward Beecher

-- cut here --
diff -ur openssl-0.9.6b-orig/ssl/s3_pkt.c openssl-0.9.6b-qualys/ssl/s3_pkt.c
--- openssl-0.9.6b-orig/ssl/s3_pkt.c    Mon Dec 25 10:41:37 2000
+++ openssl-0.9.6b-qualys/ssl/s3_pkt.c  Fri Dec 21 12:51:07 2001
@@ -1053,10 +1053,17 @@
                {
        default:
 #ifndef NO_TLS
-               /* TLS just ignores unknown message types */
+               /* TLS just ignores unknown message types
+                 *
+                 * dpc - 2001-12-20 - FixMe - However, we have to
+                 * 'drop' the current record and get a new one
+                 * otherwise we'll be looping on the same record
+                 * forever.
+                 */
                if (s->version == TLS1_VERSION)
                        {
-                       goto start;
+                          rr->length = 0;
+                          goto start;
                        }
 #endif
                al=SSL_AD_UNEXPECTED_MESSAGE;
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to