mirror of
https://github.com/QuasarApp/openssl.git
synced 2025-05-17 11:59:42 +00:00
improve binary compatibility
This commit is contained in:
parent
82c77c1b32
commit
a6ec2d58ba
@ -584,7 +584,7 @@ int ssl3_setup_buffers(SSL *s)
|
||||
if ((p=OPENSSL_malloc(len)) == NULL)
|
||||
goto err;
|
||||
s->s3->rbuf.buf = p;
|
||||
s->s3->rbuf.len = len;
|
||||
s->s3->rbuf_len = len;
|
||||
}
|
||||
|
||||
if (s->s3->wbuf.buf == NULL)
|
||||
@ -594,7 +594,7 @@ int ssl3_setup_buffers(SSL *s)
|
||||
if ((p=OPENSSL_malloc(len)) == NULL)
|
||||
goto err;
|
||||
s->s3->wbuf.buf = p;
|
||||
s->s3->wbuf.len = len;
|
||||
s->s3->wbuf_len = len;
|
||||
}
|
||||
s->packet= &(s->s3->rbuf.buf[0]);
|
||||
return(1);
|
||||
|
@ -758,14 +758,14 @@ void ssl3_clear(SSL *s)
|
||||
|
||||
rp = s->s3->rbuf.buf;
|
||||
wp = s->s3->wbuf.buf;
|
||||
rlen = s->s3->rbuf.len;
|
||||
wlen = s->s3->wbuf.len;
|
||||
rlen = s->s3->rbuf_len;
|
||||
wlen = s->s3->wbuf_len;
|
||||
|
||||
memset(s->s3,0,sizeof *s->s3);
|
||||
s->s3->rbuf.buf = rp;
|
||||
s->s3->wbuf.buf = wp;
|
||||
s->s3->rbuf.len = rlen;
|
||||
s->s3->wbuf.len = wlen;
|
||||
s->s3->rbuf_len = rlen;
|
||||
s->s3->wbuf_len = wlen;
|
||||
|
||||
ssl_free_wbio_buffer(s);
|
||||
|
||||
|
@ -162,7 +162,7 @@ static int ssl3_read_n(SSL *s, int n, int max, int extend)
|
||||
|
||||
{
|
||||
/* avoid buffer overflow */
|
||||
int max_max = s->s3->rbuf.len - s->packet_length;
|
||||
int max_max = s->s3->rbuf_len - s->packet_length;
|
||||
if (max > max_max)
|
||||
max = max_max;
|
||||
}
|
||||
@ -245,7 +245,7 @@ static int ssl3_get_record(SSL *s)
|
||||
extra=SSL3_RT_MAX_EXTRA;
|
||||
else
|
||||
extra=0;
|
||||
if (extra != (s->s3->rbuf.len - SSL3_RT_MAX_PACKET_SIZE))
|
||||
if (extra != (s->s3->rbuf_len - SSL3_RT_MAX_PACKET_SIZE))
|
||||
{
|
||||
/* actually likely an application error: SLS_OP_MICROSOFT_BIG_SSLV3_BUFFER
|
||||
* set after ssl3_setup_buffers() was done */
|
||||
@ -258,7 +258,7 @@ again:
|
||||
if ( (s->rstate != SSL_ST_READ_BODY) ||
|
||||
(s->packet_length < SSL3_RT_HEADER_LENGTH))
|
||||
{
|
||||
n=ssl3_read_n(s, SSL3_RT_HEADER_LENGTH, s->s3->rbuf.len, 0);
|
||||
n=ssl3_read_n(s, SSL3_RT_HEADER_LENGTH, s->s3->rbuf_len, 0);
|
||||
if (n <= 0) return(n); /* error or non-blocking */
|
||||
s->rstate=SSL_ST_READ_BODY;
|
||||
|
||||
@ -605,7 +605,7 @@ static int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
|
||||
if (prefix_len <= 0)
|
||||
goto err;
|
||||
|
||||
if (s->s3->wbuf.len < prefix_len + SSL3_RT_MAX_PACKET_SIZE)
|
||||
if (s->s3->wbuf_len < prefix_len + SSL3_RT_MAX_PACKET_SIZE)
|
||||
{
|
||||
/* insufficient space */
|
||||
SSLerr(SSL_F_DO_SSL3_WRITE, SSL_R_INTERNAL_ERROR);
|
||||
|
21
ssl/ssl3.h
21
ssl/ssl3.h
@ -252,19 +252,13 @@ typedef struct ssl3_record_st
|
||||
/*r */ unsigned char *comp; /* only used with decompression - malloc()ed */
|
||||
} SSL3_RECORD;
|
||||
|
||||
/* 'dummy' variant for binary compatibility ... */
|
||||
typedef struct dummy_ssl3_buffer_st
|
||||
{
|
||||
unsigned char *buf; /* at least SSL3_RT_MAX_PACKET_SIZE bytes,
|
||||
* see ssl3_setup_buffers() */
|
||||
int offset; /* where to 'copy from' */
|
||||
int left; /* how many bytes left */
|
||||
} DUMMY_SSL3_BUFFER;
|
||||
typedef struct ssl3_buffer_st
|
||||
{
|
||||
unsigned char *buf; /* at least SSL3_RT_MAX_PACKET_SIZE bytes,
|
||||
* see ssl3_setup_buffers() */
|
||||
#if 0 /* put directly into SSL3_STATE for best possible binary compatibility within 0.9.6 series */
|
||||
size_t len; /* buffer size */
|
||||
#endif
|
||||
int offset; /* where to 'copy from' */
|
||||
int left; /* how many bytes left */
|
||||
} SSL3_BUFFER;
|
||||
@ -296,11 +290,8 @@ typedef struct ssl3_state_st
|
||||
unsigned char server_random[SSL3_RANDOM_SIZE];
|
||||
unsigned char client_random[SSL3_RANDOM_SIZE];
|
||||
|
||||
/* dummies for best possible binary compatibility within 0.9.6 series
|
||||
* (indexes to other struct members should remain unchanged);
|
||||
* real 'rbuf' and 'wbuf' are added at the end of this struct */
|
||||
DUMMY_SSL3_BUFFER dummy_rbuf;
|
||||
DUMMY_SSL3_BUFFER dummy_wbuf;
|
||||
SSL3_BUFFER rbuf; /* read IO goes into here */
|
||||
SSL3_BUFFER wbuf; /* write IO goes into here */
|
||||
|
||||
SSL3_RECORD rrec; /* each decoded record goes in here */
|
||||
SSL3_RECORD wrec; /* goes out from here */
|
||||
@ -390,8 +381,8 @@ typedef struct ssl3_state_st
|
||||
int need_empty_fragments;
|
||||
int empty_fragment_done;
|
||||
|
||||
SSL3_BUFFER rbuf; /* read IO goes into here */
|
||||
SSL3_BUFFER wbuf; /* write IO goes into here */
|
||||
size_t rbuf_len; /* substitute for rbuf.len */
|
||||
size_t wbuf_len; /* substitute for wbuf.len */
|
||||
|
||||
} SSL3_STATE;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user