summaryrefslogtreecommitdiffstats
path: root/crypto/evp/bio_enc.c
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2016-08-23 13:31:36 +0200
committerMatt Caswell <matt@openssl.org>2016-08-24 10:34:27 +0100
commit9e421962e1cd58e302ebd8aca5d5a44198194243 (patch)
tree663fe95fef07f719d1e25d5187e735c73a3add77 /crypto/evp/bio_enc.c
parent44cb4f5b5f0cee7e177aa8fc214b992f016fa8f0 (diff)
evp/bio_enc.c: stop using pointer arithmetic for error detection.
Thanks to David Benjamin for reporting this. Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'crypto/evp/bio_enc.c')
-rw-r--r--crypto/evp/bio_enc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/crypto/evp/bio_enc.c b/crypto/evp/bio_enc.c
index e3aaadb11e..5a3beef97f 100644
--- a/crypto/evp/bio_enc.c
+++ b/crypto/evp/bio_enc.c
@@ -148,9 +148,12 @@ static int enc_read(BIO *b, char *out, int outl)
if (ctx->read_start == ctx->read_end) { /* time to read more data */
ctx->read_end = ctx->read_start = &(ctx->buf[BUF_OFFSET]);
- ctx->read_end += BIO_read(next, ctx->read_start, ENC_BLOCK_SIZE);
+ i = BIO_read(next, ctx->read_start, ENC_BLOCK_SIZE);
+ if (i > 0)
+ ctx->read_end += i;
+ } else {
+ i = ctx->read_end - ctx->read_start;
}
- i = ctx->read_end - ctx->read_start;
if (i <= 0) {
/* Should be continue next time we are called? */