summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--engines/e_padlock.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/engines/e_padlock.c b/engines/e_padlock.c
index a22fc476e6..5662bf5b50 100644
--- a/engines/e_padlock.c
+++ b/engines/e_padlock.c
@@ -457,7 +457,12 @@ padlock_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out_arg,
const unsigned char *in_arg, size_t nbytes)
{
struct padlock_cipher_data *cdata = ALIGNED_CIPHER_DATA(ctx);
- unsigned int num = EVP_CIPHER_CTX_get_num(ctx);
+ int n = EVP_CIPHER_CTX_get_num(ctx);
+ unsigned int num;
+
+ if (n < 0)
+ return 0;
+ num = (unsigned int)n;
CRYPTO_ctr128_encrypt_ctr32(in_arg, out_arg, nbytes,
cdata, EVP_CIPHER_CTX_iv_noconst(ctx),