diff --git a/0001-tpm2_getcap-fix-misspelling-of-TPM2_PT_HR_-constants.patch b/0001-tpm2_getcap-fix-misspelling-of-TPM2_PT_HR_-constants.patch new file mode 100644 index 0000000000000000000000000000000000000000..ea87be26819249d8b5382875d7887c423ec4986b --- /dev/null +++ b/0001-tpm2_getcap-fix-misspelling-of-TPM2_PT_HR_-constants.patch @@ -0,0 +1,104 @@ +From 7e9bb6c3a91a5da2792010f42df88ab9f80e8093 Mon Sep 17 00:00:00 2001 +From: Matthew Dempsky +Date: Tue, 27 Aug 2019 18:11:27 -0700 +Subject: [PATCH] tpm2_getcap: fix misspelling of TPM2_PT_HR_ constants + +tpm2-tss mispelled some of these constants as TPM2_PT_TPM2_HR_* +instead of just TPM2_PT_HR_*, and tpm2_getcap blindly followed suit. + +This commit switches tpm2_getcap to use the proper names, and to +define them locally if they're missing. Once tpm2-tools can assume a +fixed tpm2-tss, this workaround can be removed. + +Updates tpm2-software/tpm2-tss#1500. + +Signed-off-by: Matthew Dempsky +--- + tools/tpm2_getcap.c | 37 +++++++++++++++++++++++++------------ + 1 file changed, 25 insertions(+), 12 deletions(-) + +diff --git a/tools/tpm2_getcap.c b/tools/tpm2_getcap.c +index 9b15e3b..8b753dd 100644 +--- a/tools/tpm2_getcap.c ++++ b/tools/tpm2_getcap.c +@@ -38,6 +38,19 @@ + #include "tpm2_tool.h" + #include "tpm2_util.h" + ++/* ++ * Older versions of tpm2-tss misspelled these constants' names. ++ * See https://github.com/tpm2-software/tpm2-tss/issues/1500. ++ */ ++#ifndef TPM2_PT_HR_TRANSIENT_MIN ++#define TPM2_PT_HR_TRANSIENT_MIN ((TPM2_PT) (TPM2_PT_FIXED + 14)) ++#define TPM2_PT_HR_PERSISTENT_MIN ((TPM2_PT) (TPM2_PT_FIXED + 15)) ++#define TPM2_PT_HR_NV_INDEX ((TPM2_PT) (TPM2_PT_VAR + 2)) ++#define TPM2_PT_HR_TRANSIENT_AVAIL ((TPM2_PT) (TPM2_PT_VAR + 7)) ++#define TPM2_PT_HR_PERSISTENT ((TPM2_PT) (TPM2_PT_VAR + 8)) ++#define TPM2_PT_HR_PERSISTENT_AVAIL ((TPM2_PT) (TPM2_PT_VAR + 9)) ++#endif ++ + /* convenience macro to convert flags into "set" / "clear" strings */ + #define prop_str(val) val ? "set" : "clear" + /* number of eleents in the capability_map array */ +@@ -313,11 +313,11 @@ dump_tpm_properties_fixed (TPMS_TAGGED_PROPERTY properties[], + case TPM2_PT_INPUT_BUFFER: + tpm2_tool_output ("TPM2_PT_INPUT_BUFFER: 0x%08x\n", value); + break; +- case TPM2_PT_TPM2_HR_TRANSIENT_MIN: +- tpm2_tool_output ("TPM2_PT_TPM2_HR_TRANSIENT_MIN: 0x%08x\n", value); ++ case TPM2_PT_HR_TRANSIENT_MIN: ++ tpm2_tool_output ("TPM2_PT_HR_TRANSIENT_MIN: 0x%08x\n", value); + break; +- case TPM2_PT_TPM2_HR_PERSISTENT_MIN: +- tpm2_tool_output ("TPM2_PT_TPM2_HR_PERSISTENT_MIN: 0x%08x\n", value); ++ case TPM2_PT_HR_PERSISTENT_MIN: ++ tpm2_tool_output ("TPM2_PT_HR_PERSISTENT_MIN: 0x%08x\n", value); + break; + case TPM2_PT_HR_LOADED_MIN: + tpm2_tool_output ("TPM2_PT_HR_LOADED_MIN: 0x%08x\n", value); +@@ -428,8 +428,8 @@ dump_tpm_properties_var (TPMS_TAGGED_PROPERTY properties[], + case TPM2_PT_STARTUP_CLEAR: + dump_startup_clear_attrs ((TPMA_STARTUP_CLEAR)value); + break; +- case TPM2_PT_TPM2_HR_NV_INDEX: +- tpm2_tool_output ("TPM2_PT_TPM2_HR_NV_INDEX: 0x%08x\n", value); ++ case TPM2_PT_HR_NV_INDEX: ++ tpm2_tool_output ("TPM2_PT_HR_NV_INDEX: 0x%08x\n", value); + break; + case TPM2_PT_HR_LOADED: + tpm2_tool_output ("TPM2_PT_HR_LOADED: 0x%08x\n", value); +@@ -443,14 +443,14 @@ dump_tpm_properties_var (TPMS_TAGGED_PROPERTY properties[], + case TPM2_PT_HR_ACTIVE_AVAIL: + tpm2_tool_output ("TPM2_PT_HR_ACTIVE_AVAIL: 0x%08x\n", value); + break; +- case TPM2_PT_TPM2_HR_TRANSIENT_AVAIL: +- tpm2_tool_output ("TPM2_PT_TPM2_HR_TRANSIENT_AVAIL: 0x%08x\n", value); ++ case TPM2_PT_HR_TRANSIENT_AVAIL: ++ tpm2_tool_output ("TPM2_PT_HR_TRANSIENT_AVAIL: 0x%08x\n", value); + break; +- case TPM2_PT_TPM2_HR_PERSISTENT: +- tpm2_tool_output ("TPM2_PT_TPM2_HR_PERSISTENT: 0x%08x\n", value); ++ case TPM2_PT_HR_PERSISTENT: ++ tpm2_tool_output ("TPM2_PT_HR_PERSISTENT: 0x%08x\n", value); + break; +- case TPM2_PT_TPM2_HR_PERSISTENT_AVAIL: +- tpm2_tool_output ("TPM2_PT_TPM2_HR_PERSISTENT_AVAIL: 0x%08x\n", value); ++ case TPM2_PT_HR_PERSISTENT_AVAIL: ++ tpm2_tool_output ("TPM2_PT_HR_PERSISTENT_AVAIL: 0x%08x\n", value); + break; + case TPM2_PT_NV_COUNTERS: + tpm2_tool_output ("TPM2_PT_NV_COUNTERS: 0x%08x\n", value); +diff --git a/tools/tpm2_listpersistent.c b/tools/tpm2_listpersistent.c +index 45da1a4..d693e6c 100644 +--- a/tools/tpm2_listpersistent.c ++++ b/tools/tpm2_listpersistent.c +@@ -152,7 +152,7 @@ int tpm2_tool_onrun(TSS2_SYS_CONTEXT *sapi_context, tpm2_option_flags flags) { + + UINT32 property = tpm2_util_endian_swap_32(TPM2_HT_PERSISTENT); + rval = TSS2_RETRY_EXP(Tss2_Sys_GetCapability(sapi_context, 0, TPM2_CAP_HANDLES, +- property, TPM2_PT_TPM2_HR_PERSISTENT, &moreData, ++ property, TPM2_PT_HR_PERSISTENT, &moreData, + &capabilityData, 0)); + if(rval != TPM2_RC_SUCCESS) + { diff --git a/tpm2-tools.spec b/tpm2-tools.spec index 68911a26f19c501cac8e5cb76d28989d8d23ccf9..9b927af50c029afcc98a8b3a8addbd78195ff7dd 100644 --- a/tpm2-tools.spec +++ b/tpm2-tools.spec @@ -1,12 +1,13 @@ Name: tpm2-tools Version: 3.1.1 -Release: 7 +Release: 8 Summary: A TPM2.0 testing tool based on TPM2.0-TSS License: BSD URL: https://github.com/tpm2-software/tpm2-tools Source0: https://github.com/tpm2-software/tpm2-tools/releases/download/%{version}/%{name}-%{version}.tar.gz Patch1: Revert-objectattrs-clear-before-or-ing-in-values.patch +Patch2: 0001-tpm2_getcap-fix-misspelling-of-TPM2_PT_HR_-constants.patch BuildRequires: gcc-c++ libtool autoconf-archive pkgconfig(cmocka) pkgconfig(libcurl) pkgconfig(openssl) BuildRequires: pkgconfig(tss2-mu) pkgconfig(tss2-sys) pkgconfig(tss2-esys) git libgcrypt @@ -55,6 +56,9 @@ make check %{_mandir}/*/* %changelog +* Tue May 12 2020 wanghongzhe - 3.1.1-8 +- bugfix for tpm2-tss upgrade + * Thu Mar 19 2020 openEuler Buildteam - 3.1.1-7 - add BuildRequires: libgcrypt-devel gdb