diff options
author | jsing <> | 2022-09-10 17:39:47 +0000 |
---|---|---|
committer | jsing <> | 2022-09-10 17:39:47 +0000 |
commit | bb3c52398649c1e41080621f529dbb1d1cee3afb (patch) | |
tree | 80e430face99f2837d3b687cded293385ab116a5 /src/lib/libcrypto/evp/e_bf.c | |
parent | b9b7e24dd08d9f1c9b144d42e8f56eacfefeb36b (diff) | |
download | openbsd-bb3c52398649c1e41080621f529dbb1d1cee3afb.tar.gz openbsd-bb3c52398649c1e41080621f529dbb1d1cee3afb.tar.bz2 openbsd-bb3c52398649c1e41080621f529dbb1d1cee3afb.zip |
Use correct length for EVP CFB mode ciphers.
The BLOCK_CIPHER_* macros contained a bug where the total length is passed
to the underlying cipher implementation, rather than the length of the
current chunk. Correct this and use the chunk length instead.
Should address the remaining issues reported by Coverity.
ok tb@
Diffstat (limited to 'src/lib/libcrypto/evp/e_bf.c')
-rw-r--r-- | src/lib/libcrypto/evp/e_bf.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lib/libcrypto/evp/e_bf.c b/src/lib/libcrypto/evp/e_bf.c index 4122f701da..f97f9ed1e4 100644 --- a/src/lib/libcrypto/evp/e_bf.c +++ b/src/lib/libcrypto/evp/e_bf.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: e_bf.c,v 1.12 2022/09/04 15:45:25 jsing Exp $ */ | 1 | /* $OpenBSD: e_bf.c,v 1.13 2022/09/10 17:39:47 jsing Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -114,7 +114,7 @@ bf_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in | |||
114 | chunk = inl; | 114 | chunk = inl; |
115 | 115 | ||
116 | while (inl && inl >= chunk) { | 116 | while (inl && inl >= chunk) { |
117 | BF_cfb64_encrypt(in, out, (long)inl, &((EVP_BF_KEY *)ctx->cipher_data)->ks, ctx->iv, &ctx->num, ctx->encrypt); | 117 | BF_cfb64_encrypt(in, out, (long)chunk, &((EVP_BF_KEY *)ctx->cipher_data)->ks, ctx->iv, &ctx->num, ctx->encrypt); |
118 | inl -= chunk; | 118 | inl -= chunk; |
119 | in += chunk; | 119 | in += chunk; |
120 | out += chunk; | 120 | out += chunk; |