From: Dr. Stephen Henson Date: Sun, 7 May 2006 12:30:37 +0000 (+0000) Subject: Fix from stable branch. X-Git-Tag: OpenSSL_0_9_8k^2~1344 X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=5cda6c458211c2b5803f9616b192fd2e8c1c47f3 Fix from stable branch. --- diff --git a/CHANGES b/CHANGES index c74a02c367..1d536cdd20 100644 --- a/CHANGES +++ b/CHANGES @@ -224,7 +224,17 @@ *) Add print and set support for Issuing Distribution Point CRL extension. [Steve Henson] - Changes between 0.9.8a and 0.9.8b [XX xxx XXXX] + Changes between 0.9.8b and 0.9.8c [xx XXX xxxx] + + *) Disable the padding bug check when compression is in use. The padding + bug check assumes the first packet is of even length, this is not + necessarily true if compresssion is enabled and can result in false + positives causing handshake failure. The actual bug test is ancient + code so it is hoped that implementations will either have fixed it by + now or any which still have the bug do not support compression. + [Steve Henson] + + Changes between 0.9.8a and 0.9.8b [04 May 2006] *) When applying a cipher rule check to see if string match is an explicit cipher suite and only match that one cipher suite if it is. diff --git a/ssl/t1_enc.c b/ssl/t1_enc.c index cf38aa02f2..4baea2dc67 100644 --- a/ssl/t1_enc.c +++ b/ssl/t1_enc.c @@ -654,7 +654,15 @@ int tls1_enc(SSL *s, int send) { ii=i=rec->data[l-1]; /* padding_length */ i++; - if (s->options&SSL_OP_TLS_BLOCK_PADDING_BUG) + /* NB: if compression is in operation the first packet + * may not be of even length so the padding bug check + * cannot be performed. This bug workaround has been + * around since SSLeay so hopefully it is either fixed + * now or no buggy implementation supports compression + * [steve] + */ + if ( (s->options&SSL_OP_TLS_BLOCK_PADDING_BUG) + && !s->expand) { /* First packet is even in size, so check */ if ((memcmp(s->s3->read_sequence,