summaryrefslogtreecommitdiffstats
path: root/lib/libssl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libssl')
-rw-r--r--lib/libssl/d1_lib.c8
-rw-r--r--lib/libssl/d1_pkt.c6
-rw-r--r--lib/libssl/ssl_both.c26
-rw-r--r--lib/libssl/ssl_locl.h7
4 files changed, 26 insertions, 21 deletions
diff --git a/lib/libssl/d1_lib.c b/lib/libssl/d1_lib.c
index 1f818307d11..758f5195e64 100644
--- a/lib/libssl/d1_lib.c
+++ b/lib/libssl/d1_lib.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: d1_lib.c,v 1.46 2020/07/07 19:31:11 jsing Exp $ */
+/* $OpenBSD: d1_lib.c,v 1.47 2020/09/24 17:59:54 jsing Exp $ */
/*
* DTLS implementation written by Nagendra Modadugu
* (nagendra@cs.stanford.edu) for the OpenSSL project 2005.
@@ -132,14 +132,14 @@ dtls1_clear_queues(SSL *s)
while ((item = pqueue_pop(D1I(s)->unprocessed_rcds.q)) != NULL) {
rdata = (DTLS1_RECORD_DATA_INTERNAL *) item->data;
- free(rdata->rbuf.buf);
+ ssl3_release_buffer(&rdata->rbuf);
free(item->data);
pitem_free(item);
}
while ((item = pqueue_pop(D1I(s)->processed_rcds.q)) != NULL) {
rdata = (DTLS1_RECORD_DATA_INTERNAL *) item->data;
- free(rdata->rbuf.buf);
+ ssl3_release_buffer(&rdata->rbuf);
free(item->data);
pitem_free(item);
}
@@ -160,7 +160,7 @@ dtls1_clear_queues(SSL *s)
while ((item = pqueue_pop(D1I(s)->buffered_app_data.q)) != NULL) {
rdata = (DTLS1_RECORD_DATA_INTERNAL *) item->data;
- free(rdata->rbuf.buf);
+ ssl3_release_buffer(&rdata->rbuf);
free(item->data);
pitem_free(item);
}
diff --git a/lib/libssl/d1_pkt.c b/lib/libssl/d1_pkt.c
index 748ff988da8..31ea52fcaef 100644
--- a/lib/libssl/d1_pkt.c
+++ b/lib/libssl/d1_pkt.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: d1_pkt.c,v 1.81 2020/08/30 15:40:19 jsing Exp $ */
+/* $OpenBSD: d1_pkt.c,v 1.82 2020/09/24 17:59:54 jsing Exp $ */
/*
* DTLS implementation written by Nagendra Modadugu
* (nagendra@cs.stanford.edu) for the OpenSSL project 2005.
@@ -200,7 +200,7 @@ dtls1_copy_record(SSL *s, pitem *item)
rdata = (DTLS1_RECORD_DATA_INTERNAL *)item->data;
- free(S3I(s)->rbuf.buf);
+ ssl3_release_buffer(&S3I(s)->rbuf);
s->internal->packet = rdata->packet;
s->internal->packet_length = rdata->packet_length;
@@ -251,7 +251,7 @@ dtls1_buffer_record(SSL *s, record_pqueue *queue, unsigned char *priority)
return (1);
err:
- free(rdata->rbuf.buf);
+ ssl3_release_buffer(&rdata->rbuf);
init_err:
SSLerror(s, ERR_R_INTERNAL_ERROR);
diff --git a/lib/libssl/ssl_both.c b/lib/libssl/ssl_both.c
index 488a5ff7c93..dff44ecd415 100644
--- a/lib/libssl/ssl_both.c
+++ b/lib/libssl/ssl_both.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssl_both.c,v 1.18 2020/05/19 16:35:20 jsing Exp $ */
+/* $OpenBSD: ssl_both.c,v 1.19 2020/09/24 17:59:54 jsing Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
@@ -708,7 +708,7 @@ ssl3_setup_read_buffer(SSL *s)
S3I(s)->rbuf.len = len;
}
- s->internal->packet = &(S3I(s)->rbuf.buf[0]);
+ s->internal->packet = S3I(s)->rbuf.buf;
return 1;
err:
@@ -759,18 +759,22 @@ ssl3_setup_buffers(SSL *s)
return 1;
}
-int
-ssl3_release_write_buffer(SSL *s)
+void
+ssl3_release_buffer(SSL3_BUFFER_INTERNAL *b)
{
- free(S3I(s)->wbuf.buf);
- S3I(s)->wbuf.buf = NULL;
- return 1;
+ freezero(b->buf, b->len);
+ b->buf = NULL;
+ b->len = 0;
}
-int
+void
ssl3_release_read_buffer(SSL *s)
{
- free(S3I(s)->rbuf.buf);
- S3I(s)->rbuf.buf = NULL;
- return 1;
+ ssl3_release_buffer(&S3I(s)->rbuf);
+}
+
+void
+ssl3_release_write_buffer(SSL *s)
+{
+ ssl3_release_buffer(&S3I(s)->wbuf);
}
diff --git a/lib/libssl/ssl_locl.h b/lib/libssl/ssl_locl.h
index a3b8a805720..d4ba7f66d4a 100644
--- a/lib/libssl/ssl_locl.h
+++ b/lib/libssl/ssl_locl.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssl_locl.h,v 1.293 2020/09/17 15:23:29 jsing Exp $ */
+/* $OpenBSD: ssl_locl.h,v 1.294 2020/09/24 17:59:54 jsing Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
@@ -1223,8 +1223,9 @@ int ssl3_setup_buffers(SSL *s);
int ssl3_setup_init_buffer(SSL *s);
int ssl3_setup_read_buffer(SSL *s);
int ssl3_setup_write_buffer(SSL *s);
-int ssl3_release_read_buffer(SSL *s);
-int ssl3_release_write_buffer(SSL *s);
+void ssl3_release_buffer(SSL3_BUFFER_INTERNAL *b);
+void ssl3_release_read_buffer(SSL *s);
+void ssl3_release_write_buffer(SSL *s);
int ssl3_new(SSL *s);
void ssl3_free(SSL *s);
int ssl3_accept(SSL *s);