From 9e421962e1cd58e302ebd8aca5d5a44198194243 Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Tue, 23 Aug 2016 13:31:36 +0200 Subject: [PATCH] evp/bio_enc.c: stop using pointer arithmetic for error detection. Thanks to David Benjamin for reporting this. Reviewed-by: Rich Salz Reviewed-by: Richard Levitte --- crypto/evp/bio_enc.c | 7 +++++-- 1 file 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? */ -- 2.34.1