[openssl] master update
tmraz at fedoraproject.org
tmraz at fedoraproject.org
Thu Sep 12 14:38:27 UTC 2019
The branch master has been updated
via 6beb8b39ba8e4cb005c1fcd2586ba19e17f04b95 (commit)
from 799614faa3f921ff6ea49e700cbe8a9fb4febf4c (commit)
- Log -----------------------------------------------------------------
commit 6beb8b39ba8e4cb005c1fcd2586ba19e17f04b95
Author: Tomas Mraz <tmraz at fedoraproject.org>
Date: Thu Sep 12 12:27:36 2019 +0200
BIO_f_zlib: Properly handle BIO_CTRL_PENDING and BIO_CTRL_WPENDING calls.
There can be data to write in output buffer and data to read that were
not yet read in the input stream.
Fixes #9866
Reviewed-by: Richard Levitte <levitte at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9877)
-----------------------------------------------------------------------
Summary of changes:
crypto/comp/c_zlib.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/crypto/comp/c_zlib.c b/crypto/comp/c_zlib.c
index 78219f202d..1dd7d67998 100644
--- a/crypto/comp/c_zlib.c
+++ b/crypto/comp/c_zlib.c
@@ -598,6 +598,28 @@ static long bio_zlib_ctrl(BIO *b, int cmd, long num, void *ptr)
BIO_copy_next_retry(b);
break;
+ case BIO_CTRL_WPENDING:
+ if (ctx->obuf == NULL)
+ return 0;
+
+ if (ctx->odone) {
+ ret = ctx->ocount;
+ } else {
+ ret = ctx->ocount;
+ if (ret == 0)
+ /* Unknown amount pending but we are not finished */
+ ret = 1;
+ }
+ if (ret == 0)
+ ret = BIO_ctrl(next, cmd, num, ptr);
+ break;
+
+ case BIO_CTRL_PENDING:
+ ret = ctx->zin.avail_in;
+ if (ret == 0)
+ ret = BIO_ctrl(next, cmd, num, ptr);
+ break;
+
default:
ret = BIO_ctrl(next, cmd, num, ptr);
break;
More information about the openssl-commits
mailing list