summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2018-05-04 14:44:19 +0200
committerRichard Levitte <levitte@openssl.org>2018-05-05 00:19:17 +0200
commit8dd55d9ee107337460e6a35b4ece234b4475e12d (patch)
tree1800afd2a9368d30ad7ad24f00f6f0f1b22b3b40 /crypto
parentaed0ecb97c2d5329b5b5728c1e74fa63ce58ca8f (diff)
BIO_s_mem() write: Skip early when input length is zero
When the input length is zero, just return zero early. Otherwise, there's a small chance that memory allocation is engaged, fails and returns -1, which is a bit confusing when nothing should be written. Fixes #4782 #4827 Reviewed-by: Ben Kaduk <kaduk@mit.edu> (Merged from https://github.com/openssl/openssl/pull/6175) (cherry picked from commit 0d94212a046e87fafea6e83e8ea2b2a58db49979)
Diffstat (limited to 'crypto')
-rw-r--r--crypto/bio/bss_mem.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/crypto/bio/bss_mem.c b/crypto/bio/bss_mem.c
index b0394a960d..6ccb8e2788 100644
--- a/crypto/bio/bss_mem.c
+++ b/crypto/bio/bss_mem.c
@@ -188,6 +188,8 @@ static int mem_write(BIO *b, const char *in, int inl)
}
BIO_clear_retry_flags(b);
+ if (inl == 0)
+ return 0;
blen = bm->length;
if (BUF_MEM_grow_clean(bm, blen + inl) != (blen + inl))
goto end;