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:16:45 +0000 (00:16 +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 ff9a3ebb413fbf66ae1b02d9901ba499832c270c..62b01cd5b980d352a96c6bdc01e66d7c44e4ac7d 100644 (file)
@@ -212,6 +212,8 @@ static int mem_write(BIO *b, const char *in, int inl)
         goto end;
     }
     BIO_clear_retry_flags(b);
+    if (inl == 0)
+        return 0;
     blen = bbm->readp->length;
     mem_buf_sync(b);
     if (BUF_MEM_grow_clean(bbm->buf, blen + inl) == 0)