You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
2.2 KiB
52 lines
2.2 KiB
diff -up openssl-3.0.1/apps/s_server.c.handle-records openssl-3.0.1/apps/s_server.c |
|
--- openssl-3.0.1/apps/s_server.c.handle-records 2022-02-03 15:26:16.803434943 +0100 |
|
+++ openssl-3.0.1/apps/s_server.c 2022-02-03 15:34:33.358298697 +0100 |
|
@@ -2982,7 +2982,9 @@ static int www_body(int s, int stype, in |
|
/* Set width for a select call if needed */ |
|
width = s + 1; |
|
|
|
- buf = app_malloc(bufsize, "server www buffer"); |
|
+ /* as we use BIO_gets(), and it always null terminates data, we need |
|
+ * to allocate 1 byte longer buffer to fit the full 2^14 byte record */ |
|
+ buf = app_malloc(bufsize + 1, "server www buffer"); |
|
io = BIO_new(BIO_f_buffer()); |
|
ssl_bio = BIO_new(BIO_f_ssl()); |
|
if ((io == NULL) || (ssl_bio == NULL)) |
|
@@ -3047,7 +3049,7 @@ static int www_body(int s, int stype, in |
|
} |
|
|
|
for (;;) { |
|
- i = BIO_gets(io, buf, bufsize - 1); |
|
+ i = BIO_gets(io, buf, bufsize + 1); |
|
if (i < 0) { /* error */ |
|
if (!BIO_should_retry(io) && !SSL_waiting_for_async(con)) { |
|
if (!s_quiet) |
|
@@ -3112,7 +3114,7 @@ static int www_body(int s, int stype, in |
|
* we're expecting to come from the client. If they haven't |
|
* sent one there's not much we can do. |
|
*/ |
|
- BIO_gets(io, buf, bufsize - 1); |
|
+ BIO_gets(io, buf, bufsize + 1); |
|
} |
|
|
|
BIO_puts(io, |
|
@@ -3401,7 +3403,9 @@ static int rev_body(int s, int stype, in |
|
SSL *con; |
|
BIO *io, *ssl_bio, *sbio; |
|
|
|
- buf = app_malloc(bufsize, "server rev buffer"); |
|
+ /* as we use BIO_gets(), and it always null terminates data, we need |
|
+ * to allocate 1 byte longer buffer to fit the full 2^14 byte record */ |
|
+ buf = app_malloc(bufsize + 1, "server rev buffer"); |
|
io = BIO_new(BIO_f_buffer()); |
|
ssl_bio = BIO_new(BIO_f_ssl()); |
|
if ((io == NULL) || (ssl_bio == NULL)) |
|
@@ -3476,7 +3480,7 @@ static int rev_body(int s, int stype, in |
|
print_ssl_summary(con); |
|
|
|
for (;;) { |
|
- i = BIO_gets(io, buf, bufsize - 1); |
|
+ i = BIO_gets(io, buf, bufsize + 1); |
|
if (i < 0) { /* error */ |
|
if (!BIO_should_retry(io)) { |
|
if (!s_quiet)
|
|
|