projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix DTLS1.2 buffers
[openssl.git]
/
ssl
/
record
/
ssl3_buffer.c
diff --git
a/ssl/record/ssl3_buffer.c
b/ssl/record/ssl3_buffer.c
index 5a8d34c6fb50495dc307a859463173be2bf686f9..7685e69262b56c1571fdf2711a3d75e82e9a50a4 100644
(file)
--- a/
ssl/record/ssl3_buffer.c
+++ b/
ssl/record/ssl3_buffer.c
@@
-120,6
+120,19
@@
void SSL3_BUFFER_set_data(SSL3_BUFFER *b, const unsigned char *d, int n)
b->offset = 0;
}
b->offset = 0;
}
+/*
+ * Clear the contents of an SSL3_BUFFER but retain any memory allocated
+ */
+void SSL3_BUFFER_clear(SSL3_BUFFER *b)
+{
+ unsigned char *buf = b->buf;
+ size_t len = b->len;
+
+ memset(b, 0, sizeof(*b));
+ b->buf = buf;
+ b->len = len;
+}
+
void SSL3_BUFFER_release(SSL3_BUFFER *b)
{
OPENSSL_free(b->buf);
void SSL3_BUFFER_release(SSL3_BUFFER *b)
{
OPENSSL_free(b->buf);
@@
-134,7
+147,7
@@
int ssl3_setup_read_buffer(SSL *s)
b = RECORD_LAYER_get_rbuf(&s->rlayer);
b = RECORD_LAYER_get_rbuf(&s->rlayer);
- if (SSL_
version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER
)
+ if (SSL_
IS_DTLS(s)
)
headerlen = DTLS1_RT_HEADER_LENGTH;
else
headerlen = SSL3_RT_HEADER_LENGTH;
headerlen = DTLS1_RT_HEADER_LENGTH;
else
headerlen = SSL3_RT_HEADER_LENGTH;
@@
-176,7
+189,7
@@
int ssl3_setup_write_buffer(SSL *s)
wb = RECORD_LAYER_get_wbuf(&s->rlayer);
wb = RECORD_LAYER_get_wbuf(&s->rlayer);
- if (SSL_
version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER
)
+ if (SSL_
IS_DTLS(s)
)
headerlen = DTLS1_RT_HEADER_LENGTH + 1;
else
headerlen = SSL3_RT_HEADER_LENGTH;
headerlen = DTLS1_RT_HEADER_LENGTH + 1;
else
headerlen = SSL3_RT_HEADER_LENGTH;