BIO_write_ex(): Make handing of BIO b == NULL and dlen == 0 less redundant
authorDr. David von Oheimb <David.von.Oheimb@siemens.com>
Sat, 12 Jun 2021 09:49:22 +0000 (11:49 +0200)
committerDr. David von Oheimb <dev@ddvo.net>
Tue, 15 Jun 2021 12:23:29 +0000 (14:23 +0200)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15722)

crypto/bio/bio_lib.c

index af7ad05bcab72e362ea549b58ced22e3813214f4..a378f186d7b4a07612755b376207c536fcbc490c 100644 (file)
@@ -393,13 +393,8 @@ int BIO_write(BIO *b, const void *data, int dlen)
 
 int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written)
 {
-    if (dlen == 0) {
-        /* no error */
-        if (written != NULL)
-            *written = 0;
-        return 1;
-    }
-    return bio_write_intern(b, data, dlen, written) > 0;
+    return bio_write_intern(b, data, dlen, written) > 0
+        || (b != NULL && dlen == 0); /* order is important for *written */
 }
 
 int BIO_puts(BIO *b, const char *buf)