diff options
author | Mike DePaulo <mikedep333@gmail.com> | 2014-10-18 19:59:47 -0400 |
---|---|---|
committer | Mike DePaulo <mikedep333@gmail.com> | 2014-10-18 20:57:02 -0400 |
commit | 8aa7b05b29941b07940857ff6f60bcc60eaa59a9 (patch) | |
tree | acf3d988cfbd1977723f93285bda5152d096b92e /openssl/ssl/s3_pkt.c | |
parent | d2d01e39531d9fb823b2271244c324aad0a6575d (diff) | |
download | vcxsrv-8aa7b05b29941b07940857ff6f60bcc60eaa59a9.tar.gz vcxsrv-8aa7b05b29941b07940857ff6f60bcc60eaa59a9.tar.bz2 vcxsrv-8aa7b05b29941b07940857ff6f60bcc60eaa59a9.zip |
Update openssl to version openssl-1.0.1j
Conflicts:
openssl/Makefile
openssl/crypto/opensslconf.h
Diffstat (limited to 'openssl/ssl/s3_pkt.c')
-rw-r--r-- | openssl/ssl/s3_pkt.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/openssl/ssl/s3_pkt.c b/openssl/ssl/s3_pkt.c index eff7356a3..4c9285f35 100644 --- a/openssl/ssl/s3_pkt.c +++ b/openssl/ssl/s3_pkt.c @@ -273,6 +273,12 @@ int ssl3_read_n(SSL *s, int n, int max, int extend) return(n); } +/* MAX_EMPTY_RECORDS defines the number of consecutive, empty records that will + * be processed per call to ssl3_get_record. Without this limit an attacker + * could send empty records at a faster rate than we can process and cause + * ssl3_get_record to loop forever. */ +#define MAX_EMPTY_RECORDS 32 + /* Call this to get a new input record. * It will return <= 0 if more data is needed, normally due to an error * or non-blocking IO. @@ -293,6 +299,7 @@ static int ssl3_get_record(SSL *s) short version; unsigned mac_size, orig_len; size_t extra; + unsigned empty_record_count = 0; rr= &(s->s3->rrec); sess=s->session; @@ -523,7 +530,17 @@ printf("\n"); s->packet_length=0; /* just read a 0 length packet */ - if (rr->length == 0) goto again; + if (rr->length == 0) + { + empty_record_count++; + if (empty_record_count > MAX_EMPTY_RECORDS) + { + al=SSL_AD_UNEXPECTED_MESSAGE; + SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_RECORD_TOO_SMALL); + goto f_err; + } + goto again; + } #if 0 fprintf(stderr, "Ultimate Record type=%d, Length=%d\n", rr->type, rr->length); |