From e4a642bc646c0f0a4b3fded5443d1aefad893d2b Mon Sep 17 00:00:00 2001 From: "fu.xie" Date: Thu, 16 Jul 2026 13:57:04 +0800 Subject: [PATCH] Fix WOLFTPM_IS_COMMAND_UNAVAILABLE to handle vendor error code variants Some TPM chips (e.g. Nations NS350) return TPM_RC_COMMAND_CODE with additional bits set (0xb0143 instead of 0x143). The macro previously used exact equality, causing it to miss these variants and treat the error as fatal. Apply a 0x1FF mask to compare only the base VER1 error code, so vendor-extended responses are properly recognized. --- wolftpm/tpm2.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wolftpm/tpm2.h b/wolftpm/tpm2.h index 70bebcf8..7b2a2a35 100644 --- a/wolftpm/tpm2.h +++ b/wolftpm/tpm2.h @@ -2151,9 +2151,9 @@ struct wolfTPM_winContext { #define TPM_E_COMMAND_BLOCKED (0x80280400) #endif -#define WOLFTPM_IS_COMMAND_UNAVAILABLE(code) ((code) == (int)TPM_RC_COMMAND_CODE || (code) == (int)TPM_E_COMMAND_BLOCKED) +#define WOLFTPM_IS_COMMAND_UNAVAILABLE(code) (((code) & 0x1FF) == (int)TPM_RC_COMMAND_CODE || (code) == (int)TPM_E_COMMAND_BLOCKED) #else -#define WOLFTPM_IS_COMMAND_UNAVAILABLE(code) (code == (int)TPM_RC_COMMAND_CODE) +#define WOLFTPM_IS_COMMAND_UNAVAILABLE(code) (((code) & 0x1FF) == (int)TPM_RC_COMMAND_CODE) #endif /* WOLFTPM_WINAPI */ /* make sure advanced IO is enabled for I2C */