diff options
| author | jsing <> | 2020-09-24 17:59:54 +0000 |
|---|---|---|
| committer | jsing <> | 2020-09-24 17:59:54 +0000 |
| commit | 1328e78055c6ad087ebbec8484862dea13576ef5 (patch) | |
| tree | 1888b2e1b6ea589c37d114a98388a3b495d52958 /src/lib/libssl/ssl_both.c | |
| parent | 75f522291d5ee57ddc9fa504c8c61e280dacfbaf (diff) | |
| download | openbsd-1328e78055c6ad087ebbec8484862dea13576ef5.tar.gz openbsd-1328e78055c6ad087ebbec8484862dea13576ef5.tar.bz2 openbsd-1328e78055c6ad087ebbec8484862dea13576ef5.zip | |
Release read and write buffers using freezero().
Provide a ssl3_release_buffer() function that correctly frees a buffer
and call it from the appropriate locations. While here also change
ssl3_release_{read,write}_buffer() to void since they cannot fail and
no callers check the return value currently.
ok beck@ inoguchi@ tb@
Diffstat (limited to 'src/lib/libssl/ssl_both.c')
| -rw-r--r-- | src/lib/libssl/ssl_both.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/lib/libssl/ssl_both.c b/src/lib/libssl/ssl_both.c index 488a5ff7c9..dff44ecd41 100644 --- a/src/lib/libssl/ssl_both.c +++ b/src/lib/libssl/ssl_both.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_both.c,v 1.18 2020/05/19 16:35:20 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_both.c,v 1.19 2020/09/24 17:59:54 jsing Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -708,7 +708,7 @@ ssl3_setup_read_buffer(SSL *s) | |||
| 708 | S3I(s)->rbuf.len = len; | 708 | S3I(s)->rbuf.len = len; |
| 709 | } | 709 | } |
| 710 | 710 | ||
| 711 | s->internal->packet = &(S3I(s)->rbuf.buf[0]); | 711 | s->internal->packet = S3I(s)->rbuf.buf; |
| 712 | return 1; | 712 | return 1; |
| 713 | 713 | ||
| 714 | err: | 714 | err: |
| @@ -759,18 +759,22 @@ ssl3_setup_buffers(SSL *s) | |||
| 759 | return 1; | 759 | return 1; |
| 760 | } | 760 | } |
| 761 | 761 | ||
| 762 | int | 762 | void |
| 763 | ssl3_release_write_buffer(SSL *s) | 763 | ssl3_release_buffer(SSL3_BUFFER_INTERNAL *b) |
| 764 | { | 764 | { |
| 765 | free(S3I(s)->wbuf.buf); | 765 | freezero(b->buf, b->len); |
| 766 | S3I(s)->wbuf.buf = NULL; | 766 | b->buf = NULL; |
| 767 | return 1; | 767 | b->len = 0; |
| 768 | } | 768 | } |
| 769 | 769 | ||
| 770 | int | 770 | void |
| 771 | ssl3_release_read_buffer(SSL *s) | 771 | ssl3_release_read_buffer(SSL *s) |
| 772 | { | 772 | { |
| 773 | free(S3I(s)->rbuf.buf); | 773 | ssl3_release_buffer(&S3I(s)->rbuf); |
| 774 | S3I(s)->rbuf.buf = NULL; | 774 | } |
| 775 | return 1; | 775 | |
| 776 | void | ||
| 777 | ssl3_release_write_buffer(SSL *s) | ||
| 778 | { | ||
| 779 | ssl3_release_buffer(&S3I(s)->wbuf); | ||
| 776 | } | 780 | } |
