In certain cases, no encoding has been set up for the b64 filter.  In
such cases, a flush should *not* attempt to finalise the encoding, as
the EVP_ENCODE_CTX structure will only be filled with garbage.  For
the same reason, do the same check when a wpending is performed.
diff --git a/crypto/evp/bio_b64.c b/crypto/evp/bio_b64.c
index af6fa2a..f12eac1 100644
--- a/crypto/evp/bio_b64.c
+++ b/crypto/evp/bio_b64.c
@@ -465,7 +465,8 @@
 		break;
 	case BIO_CTRL_WPENDING: /* More to write in buffer */
 		ret=ctx->buf_len-ctx->buf_off;
-		if ((ret == 0) && (ctx->base64.num != 0))
+		if ((ret == 0) && (ctx->encode != B64_NONE)
+			&& (ctx->base64.num != 0))
 			ret=1;
 		else if (ret <= 0)
 			ret=BIO_ctrl(b->next_bio,cmd,num,ptr);
@@ -500,7 +501,7 @@
 				goto again;
 				}
 			}
-		else if (ctx->base64.num != 0)
+		else if (ctx->encode != B64_NONE && ctx->base64.num != 0)
 			{
 			ctx->buf_off=0;
 			EVP_EncodeFinal(&(ctx->base64),