From 1420677fbd11e5485b5dc45647e27f2751e00909 Mon Sep 17 00:00:00 2001 From: Maurice Ma Date: Fri, 1 Nov 2019 14:02:09 -0700 Subject: [PATCH] Klocwork scanning fixes for IppCryptoLib This patches fixed Klocwork scanning reports in IppCryptoLib. Signed-off-by: Maurice Ma --- .../Library/IppCryptoLib/auth/gsmodmethod.c | 12 +++--- .../IppCryptoLib/auth/pcpngrsaencodec.c | 37 +++++++++++-------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/BootloaderCommonPkg/Library/IppCryptoLib/auth/gsmodmethod.c b/BootloaderCommonPkg/Library/IppCryptoLib/auth/gsmodmethod.c index 13e9faef..e2687a0b 100644 --- a/BootloaderCommonPkg/Library/IppCryptoLib/auth/gsmodmethod.c +++ b/BootloaderCommonPkg/Library/IppCryptoLib/auth/gsmodmethod.c @@ -256,7 +256,7 @@ static BNU_CHUNK_T* gs_mont_mul(BNU_CHUNK_T* pr, const BNU_CHUNK_T* pa, const BN BNU_CHUNK_T* pBuffer = gsModPoolAlloc(pME, polLength); //gres: temporary excluded: assert(NULL!=pBuffer); - { + if (pBuffer != NULL) { BNU_CHUNK_T carry = 0; int i, j; @@ -383,11 +383,13 @@ static BNU_CHUNK_T* gs_mont_decode(BNU_CHUNK_T* pr, const BNU_CHUNK_T* pa, gsMod BNU_CHUNK_T* t = gsModPoolAlloc(pME, polLength); //gres: temporary excluded: assert(NULL!=t); - ZEXPAND_BNU(t, 0, mLen); - t[0] = 1; - gs_mont_mul(pr, pa, t, pME); + if (t != NULL) { + ZEXPAND_BNU(t, 0, mLen); + t[0] = 1; + gs_mont_mul(pr, pa, t, pME); + gsModPoolFree(pME, polLength); + } - gsModPoolFree(pME, polLength); return pr; } diff --git a/BootloaderCommonPkg/Library/IppCryptoLib/auth/pcpngrsaencodec.c b/BootloaderCommonPkg/Library/IppCryptoLib/auth/pcpngrsaencodec.c index 644f3cfa..129b88de 100644 --- a/BootloaderCommonPkg/Library/IppCryptoLib/auth/pcpngrsaencodec.c +++ b/BootloaderCommonPkg/Library/IppCryptoLib/auth/pcpngrsaencodec.c @@ -5,19 +5,19 @@ **/ -/* -// +/* +// // Purpose: // Cryptography Primitive. // RSA Functions -// +// // Contents: // ippsRSA_GetBufferSizePublicKey() // ippsRSA_GetBufferSizePrivateKey() // ippsRSA_Encrypt() // ippsRSA_Decrypt() -// -// +// +// */ #include "owncp.h" @@ -168,14 +168,17 @@ void gsRSApub_cipher(IppsBigNumState* pY, gsMethod_RSA* m = getDefaultMethod_RSA(RSA_PRV_KEY_BITSIZE_N(pKey)); BNU_CHUNK_T* dataY = BN_NUMBER(pY); - cpSize nsY = m->publicExpFun(dataY, - BN_NUMBER(pX), BN_SIZE(pX), - RSA_PUB_KEY_E(pKey), BITS_BNU_CHUNK(RSA_PUB_KEY_BITSIZE_E(pKey)), - RSA_PUB_KEY_NMONT(pKey), - pBuffer); - FIX_BNU(dataY, nsY); - BN_SIZE(pY) = nsY; - BN_SIGN(pY) = ippBigNumPOS; + + if (m != NULL) { + cpSize nsY = m->publicExpFun(dataY, + BN_NUMBER(pX), BN_SIZE(pX), + RSA_PUB_KEY_E(pKey), BITS_BNU_CHUNK(RSA_PUB_KEY_BITSIZE_E(pKey)), + RSA_PUB_KEY_NMONT(pKey), + pBuffer); + FIX_BNU(dataY, nsY); + BN_SIZE(pY) = nsY; + BN_SIGN(pY) = ippBigNumPOS; + } } @@ -283,14 +286,18 @@ void gsRSAprv_cipher_crt(IppsBigNumState* pY, cpMod_BNU(dataXq, nsX, MOD_MODULUS(pMontQ), nsQ); m = getDefaultMethod_RSA(bitSizeDQ); - m->privateExpFun(dataXq, dataXq, nsQ, RSA_PRV_KEY_DQ(pKey), BITS_BNU_CHUNK(bitSizeDQ), pMontQ, pBuffer); + if (m != NULL) { + m->privateExpFun(dataXq, dataXq, nsQ, RSA_PRV_KEY_DQ(pKey), BITS_BNU_CHUNK(bitSizeDQ), pMontQ, pBuffer); + } /* compute xp = x^dP mod P */ COPY_BNU(dataXp, dataX, nsX); cpMod_BNU(dataXp, nsX, MOD_MODULUS(pMontP), nsP); m = getDefaultMethod_RSA(bitSizeDP); - m->privateExpFun(dataXp, dataXp, nsP, RSA_PRV_KEY_DP(pKey), BITS_BNU_CHUNK(bitSizeDP), pMontP, pBuffer); + if (m != NULL) { + m->privateExpFun(dataXp, dataXp, nsP, RSA_PRV_KEY_DP(pKey), BITS_BNU_CHUNK(bitSizeDP), pMontP, pBuffer); + } /* // recombination