BIO_s_mem() write: Skip early when input length is zero
authorRichard Levitte <levitte@openssl.org>
Fri, 4 May 2018 12:44:19 +0000 (14:44 +0200)
committerRichard Levitte <levitte@openssl.org>
Fri, 4 May 2018 22:19:17 +0000 (00:19 +0200)
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)

crypto/bio/bss_mem.c

index b0394a960da15f93060262fef2a8fd54592ea596..6ccb8e27886d22bf9f0fcca44b9b28c21453b2fe 100644 (file)
@@ -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;