diff options
author | Andy Polyakov <appro@openssl.org> | 2016-08-23 13:31:36 +0200 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2016-08-24 10:34:27 +0100 |
commit | 9e421962e1cd58e302ebd8aca5d5a44198194243 (patch) | |
tree | 663fe95fef07f719d1e25d5187e735c73a3add77 /crypto/evp | |
parent | 44cb4f5b5f0cee7e177aa8fc214b992f016fa8f0 (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')
-rw-r--r-- | crypto/evp/bio_enc.c | 7 |
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? */ |