X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=ssl%2Fs3_both.c;h=d67be913c2162463d91d09b2d5fb698dbcf72249;hp=2bc4e6a7104310064533bf92caf95e6c2d8cf1b1;hb=92ffa83d8b5bb9ba9d56a8e321d5924956a0bbe4;hpb=77d514c5a00511017967f98b03a946d86c923e94 diff --git a/ssl/s3_both.c b/ssl/s3_both.c index 2bc4e6a710..d67be913c2 100644 --- a/ssl/s3_both.c +++ b/ssl/s3_both.c @@ -577,6 +577,9 @@ int ssl3_setup_read_buffer(SSL *s) { unsigned char *p; size_t len, align = 0, headerlen; + SSL3_BUFFER *b; + + b = RECORD_LAYER_get_rbuf(&s->rlayer); if (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER) headerlen = DTLS1_RT_HEADER_LENGTH; @@ -587,7 +590,7 @@ int ssl3_setup_read_buffer(SSL *s) align = (-SSL3_RT_HEADER_LENGTH) & (SSL3_ALIGN_PAYLOAD - 1); #endif - if (s->s3->rbuf.buf == NULL) { + if (b->buf == NULL) { len = SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_ENCRYPTED_OVERHEAD + headerlen + align; if (s->options & SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER) { @@ -600,11 +603,11 @@ int ssl3_setup_read_buffer(SSL *s) #endif if ((p = OPENSSL_malloc(len)) == NULL) goto err; - s->s3->rbuf.buf = p; - s->s3->rbuf.len = len; + b->buf = p; + b->len = len; } - s->packet = &(s->s3->rbuf.buf[0]); + s->packet = &(b->buf[0]); return 1; err: @@ -616,6 +619,9 @@ int ssl3_setup_write_buffer(SSL *s) { unsigned char *p; size_t len, align = 0, headerlen; + SSL3_BUFFER *wb; + + wb = RECORD_LAYER_get_wbuf(&s->rlayer); if (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER) headerlen = DTLS1_RT_HEADER_LENGTH + 1; @@ -626,7 +632,7 @@ int ssl3_setup_write_buffer(SSL *s) align = (-SSL3_RT_HEADER_LENGTH) & (SSL3_ALIGN_PAYLOAD - 1); #endif - if (s->s3->wbuf.buf == NULL) { + if (wb->buf == NULL) { len = s->max_send_fragment + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD + headerlen + align; #ifndef OPENSSL_NO_COMP @@ -638,8 +644,8 @@ int ssl3_setup_write_buffer(SSL *s) if ((p = OPENSSL_malloc(len)) == NULL) goto err; - s->s3->wbuf.buf = p; - s->s3->wbuf.len = len; + wb->buf = p; + wb->len = len; } return 1; @@ -660,18 +666,25 @@ int ssl3_setup_buffers(SSL *s) int ssl3_release_write_buffer(SSL *s) { - if (s->s3->wbuf.buf != NULL) { - OPENSSL_free(s->s3->wbuf.buf); - s->s3->wbuf.buf = NULL; + SSL3_BUFFER *wb; + + wb = RECORD_LAYER_get_wbuf(&s->rlayer); + + if (wb->buf != NULL) { + OPENSSL_free(wb->buf); + wb->buf = NULL; } return 1; } int ssl3_release_read_buffer(SSL *s) { - if (s->s3->rbuf.buf != NULL) { - OPENSSL_free(s->s3->rbuf.buf); - s->s3->rbuf.buf = NULL; + SSL3_BUFFER *b; + + b = RECORD_LAYER_get_rbuf(&s->rlayer); + if (b->buf != NULL) { + OPENSSL_free(b->buf); + b->buf = NULL; } return 1; }