QAT_Engine icon indicating copy to clipboard operation
QAT_Engine copied to clipboard

qat_hw_sha3.c: resource leak in qat_sha3_session_data_init

Open ColinIanKing opened this issue 2 years ago • 1 comments

in qat_hw_sha3.c, in function qat_sha3_session_data_init there is a leak of session_data when the call to OPENSSL_zalloc fails:

  session_data = OPENSSL_zalloc(sizeof(CpaCySymSessionSetupData));
   if (NULL == session_data) {
       WARN("session setup data Malloc failure\n");
       QATerr(QAT_F_QAT_SHA3_SESSION_DATA_INIT, QAT_R_SSD_MALLOC_FAILURE);
       return 0;
   }

   /* Set priority and operation of this session */
   session_data->sessionPriority = CPA_CY_PRIORITY_HIGH;
   session_data->symOperation = CPA_CY_SYM_OP_HASH;

   /* Set the hash mode and the length of the digest */
#ifdef QAT_OPENSSL_PROVIDER
   session_data->hashSetupData.hashAlgorithm = qat_get_hash_alg_data(ctx->md_type);
#else
   session_data->hashSetupData.hashAlgorithm = qat_get_hash_alg_data(EVP_MD_CTX_type(ctx));
#endif
   session_data->hashSetupData.hashMode = CPA_CY_SYM_HASH_MODE_PLAIN;
   session_data->hashSetupData.digestResultLenInBytes = sha3_ctx->md_size;
   session_data->hashSetupData.authModeSetupData.authKey = NULL;
   session_data->hashSetupData.nestedModeSetupData.pInnerPrefixData = NULL;
   session_data->hashSetupData.nestedModeSetupData.pOuterPrefixData = NULL;

   /* Tag follows immediately after the region to hash */
   session_data->digestIsAppended = CPA_FALSE;

   /* digestVerify is not required to be set.*/ 
   session_data->verifyDigest = CPA_FALSE;

   pOpData = OPENSSL_zalloc(sizeof(template_opData));
   if (pOpData == NULL) {
       WARN("memory allocation failed for symopData struct.\n");
       QATerr(QAT_F_QAT_SHA3_SESSION_DATA_INIT, ERR_R_MALLOC_FAILURE);
       OPENSSL_free(sha3_ctx->session_data);
       return 0;
   }

^^ the case where pOpData == NULL will return without free'ing session_data

ColinIanKing avatar Jan 12 '24 13:01 ColinIanKing

@ColinIanKing Thanks for the help. We will check and fix it in upcoming release.

bjayanax avatar Jan 13 '24 06:01 bjayanax