You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
996 B
30 lines
996 B
diff --git a/providers/implementations/ciphers/cipher_aes_siv.c b/providers/implementations/ciphers/cipher_aes_siv.c |
|
index 45010b90db..b396c8651a 100644 |
|
--- a/providers/implementations/ciphers/cipher_aes_siv.c |
|
+++ b/providers/implementations/ciphers/cipher_aes_siv.c |
|
@@ -120,14 +120,18 @@ static int siv_cipher(void *vctx, unsigned char *out, size_t *outl, |
|
if (!ossl_prov_is_running()) |
|
return 0; |
|
|
|
- if (inl == 0) { |
|
- *outl = 0; |
|
- return 1; |
|
- } |
|
+ /* Ignore just empty encryption/decryption call and not AAD. */ |
|
+ if (out != NULL) { |
|
+ if (inl == 0) { |
|
+ if (outl != NULL) |
|
+ *outl = 0; |
|
+ return 1; |
|
+ } |
|
|
|
- if (outsize < inl) { |
|
- ERR_raise(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL); |
|
- return 0; |
|
+ if (outsize < inl) { |
|
+ ERR_raise(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL); |
|
+ return 0; |
|
+ } |
|
} |
|
|
|
if (ctx->hw->cipher(ctx, out, in, inl) <= 0)
|
|
|