@@ -9948,14 +9948,24 @@ static TPM_RC FwCmd_PolicyNV(FWTPM_CTX* ctx, TPM2_Packet* cmd,
99489948 }
99499949 }
99509950 if (rc == 0 && operandBSz > 0) {
9951- wc_HashUpdate(hashCtx, wcHash, operandB, operandBSz);
9951+ if (wc_HashUpdate(hashCtx, wcHash, operandB, operandBSz) != 0)
9952+ rc = TPM_RC_FAILURE;
99529953 }
99539954 if (rc == 0) {
99549955 FwStoreU16BE(tmpBuf, offset);
9955- wc_HashUpdate(hashCtx, wcHash, tmpBuf, 2);
9956+ if (wc_HashUpdate(hashCtx, wcHash, tmpBuf, 2) != 0)
9957+ rc = TPM_RC_FAILURE;
9958+ }
9959+ if (rc == 0) {
99569960 FwStoreU16BE(tmpBuf, operation);
9957- wc_HashUpdate(hashCtx, wcHash, tmpBuf, 2);
9958- wc_HashFinal(hashCtx, wcHash, argsHash);
9961+ if (wc_HashUpdate(hashCtx, wcHash, tmpBuf, 2) != 0)
9962+ rc = TPM_RC_FAILURE;
9963+ }
9964+ if (rc == 0) {
9965+ if (wc_HashFinal(hashCtx, wcHash, argsHash) != 0)
9966+ rc = TPM_RC_FAILURE;
9967+ }
9968+ if (rc == 0) {
99599969 wc_HashFree(hashCtx, wcHash);
99609970 hashCtxInit = 0;
99619971 }
@@ -9972,15 +9982,28 @@ static TPM_RC FwCmd_PolicyNV(FWTPM_CTX* ctx, TPM2_Packet* cmd,
99729982 }
99739983 }
99749984 if (rc == 0) {
9975- wc_HashUpdate(hashCtx, wcHash,
9976- sess->policyDigest.buffer, sess->policyDigest.size);
9985+ if (wc_HashUpdate(hashCtx, wcHash,
9986+ sess->policyDigest.buffer, sess->policyDigest.size) != 0)
9987+ rc = TPM_RC_FAILURE;
9988+ }
9989+ if (rc == 0) {
99779990 FwStoreU32BE(ccBuf, cc);
9978- wc_HashUpdate(hashCtx, wcHash, ccBuf, 4);
9979- wc_HashUpdate(hashCtx, wcHash, argsHash, dSz);
9980- if (nvNameSz > 0) {
9981- wc_HashUpdate(hashCtx, wcHash, nvName, nvNameSz);
9982- }
9983- wc_HashFinal(hashCtx, wcHash, sess->policyDigest.buffer);
9991+ if (wc_HashUpdate(hashCtx, wcHash, ccBuf, 4) != 0)
9992+ rc = TPM_RC_FAILURE;
9993+ }
9994+ if (rc == 0) {
9995+ if (wc_HashUpdate(hashCtx, wcHash, argsHash, dSz) != 0)
9996+ rc = TPM_RC_FAILURE;
9997+ }
9998+ if (rc == 0 && nvNameSz > 0) {
9999+ if (wc_HashUpdate(hashCtx, wcHash, nvName, nvNameSz) != 0)
10000+ rc = TPM_RC_FAILURE;
10001+ }
10002+ if (rc == 0) {
10003+ if (wc_HashFinal(hashCtx, wcHash, sess->policyDigest.buffer) != 0)
10004+ rc = TPM_RC_FAILURE;
10005+ }
10006+ if (rc == 0) {
998410007 sess->policyDigest.size = (UINT16)dSz;
998510008 wc_HashFree(hashCtx, wcHash);
998610009 hashCtxInit = 0;
0 commit comments