diff --git a/wolfcrypt/src/port/arm/armv8-aes.c b/wolfcrypt/src/port/arm/armv8-aes.c index 0dc43e4e4..7a7209c0c 100644 --- a/wolfcrypt/src/port/arm/armv8-aes.c +++ b/wolfcrypt/src/port/arm/armv8-aes.c @@ -887,11 +887,17 @@ void wc_AesFree(Aes* aes) } } - void wc_AesCtrEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) + int wc_AesCtrEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) { - byte* tmp = (byte*)aes->tmp + AES_BLOCK_SIZE - aes->left; + byte* tmp; word32 numBlocks; + if (aes == NULL || out == NULL || in == NULL) { + return BAD_FUNC_ARG; + } + + tmp = (byte*)aes->tmp + AES_BLOCK_SIZE - aes->left; + /* consume any unused bytes left in aes->tmp */ while (aes->left && sz) { *(out++) = *(in++) ^ *(tmp++); @@ -1374,7 +1380,7 @@ void wc_AesFree(Aes* aes) default: WOLFSSL_MSG("Bad AES-CTR round value"); - return; + return BAD_FUNC_ARG; } aes->left = 0; @@ -1393,6 +1399,7 @@ void wc_AesFree(Aes* aes) aes->left--; } } + return 0; } #endif /* WOLFSSL_AES_COUNTER */ @@ -3503,11 +3510,17 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, } } - void wc_AesCtrEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) + int wc_AesCtrEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) { - byte* tmp = (byte*)aes->tmp + AES_BLOCK_SIZE - aes->left; + byte* tmp; word32 numBlocks; + if (aes == NULL || out == NULL || in == NULL) { + return BAD_FUNC_ARG; + } + + tmp = (byte*)aes->tmp + AES_BLOCK_SIZE - aes->left; + /* consume any unused bytes left in aes->tmp */ while (aes->left && sz) { *(out++) = *(in++) ^ *(tmp++); @@ -3997,7 +4010,7 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, default: WOLFSSL_MSG("Bad AES-CTR round qalue"); - return; + return BAD_FUNC_ARG; } aes->left = 0; @@ -4016,6 +4029,8 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, aes->left--; } } + + return 0; } #endif /* WOLFSSL_AES_COUNTER */