tboot/tboot-gcc11.patch
Jeff Law 383268517c Fix buglet exposed by gcc-11 -Warray-parameter
Temporarily disable -Wstringop-overflow due to false positive in gcc-11
2020-10-29 15:10:19 -06:00

83 lines
3.1 KiB
Diff

diff --git a/tboot/common/tpm_12.c b/tboot/common/tpm_12.c
index a62e570..504b874 100644
--- a/tboot/common/tpm_12.c
+++ b/tboot/common/tpm_12.c
@@ -766,6 +766,8 @@ static uint32_t tpm12_osap(uint32_t locality, tpm_entity_type_t ent_type,
tpm_authhandle_t *hauth, tpm_nonce_t *nonce_even,
tpm_nonce_t *even_osap)
{
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
uint32_t ret, offset, out_size;
if ( odd_osap == NULL || hauth == NULL ||
@@ -801,6 +803,7 @@ static uint32_t tpm12_osap(uint32_t locality, tpm_entity_type_t ent_type,
LOAD_BLOB_TYPE(WRAPPER_OUT_BUF, offset, even_osap);
return ret;
+#pragma GCC diagnostic pop
}
static uint32_t _tpm12_seal(uint32_t locality, tpm_key_handle_t hkey,
@@ -1044,6 +1047,8 @@ static uint32_t _tpm12_wrap_seal(uint32_t locality,
static uint32_t _tpm12_wrap_unseal(uint32_t locality, const uint8_t *in_data,
uint32_t *secret_size, uint8_t *secret)
{
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
uint32_t ret;
tpm_nonce_t odd_osap, even_osap;
tpm_nonce_t nonce_even, nonce_odd, nonce_even_d, nonce_odd_d;
@@ -1116,6 +1121,7 @@ static uint32_t _tpm12_wrap_unseal(uint32_t locality, const uint8_t *in_data,
/* skip check for res_auth */
return ret;
+#pragma GCC diagnostic pop
}
static bool init_pcr_info(uint32_t locality,
@@ -1948,6 +1954,8 @@ static bool tpm12_get_random(struct tpm_if *ti, uint32_t locality,
static bool tpm12_cap_pcrs(struct tpm_if *ti, u32 locality, int pcr)
{
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
bool was_capped[TPM_NR_PCRS] = {false};
tpm_pcr_value_t cap_val; /* use whatever val is on stack */
@@ -1976,6 +1984,7 @@ static bool tpm12_cap_pcrs(struct tpm_if *ti, u32 locality, int pcr)
printk(TBOOT_INFO"cap'ed dynamic PCRs\n");
return true;
+#pragma GCC diagnostic pop
}
static bool tpm12_check(void)
diff --git a/tboot/include/rijndael.h b/tboot/include/rijndael.h
index 2974602..8dbcc7c 100644
--- a/tboot/include/rijndael.h
+++ b/tboot/include/rijndael.h
@@ -52,7 +52,7 @@ void rijndael_encrypt(rijndael_ctx *, const u_char *, u_char *);
int rijndaelKeySetupEnc(unsigned int [], const unsigned char [], int);
int rijndaelKeySetupDec(unsigned int [], const unsigned char [], int);
-void rijndaelEncrypt(const unsigned int [], int, const unsigned char [],
- unsigned char []);
+void rijndaelEncrypt(const unsigned int [], int, const unsigned char [16],
+ unsigned char [16]);
#endif /* __RIJNDAEL_H */
diff --git a/Config.mk b/Config.mk
index 6d2fe14..8234edd 100644
--- a/Config.mk
+++ b/Config.mk
@@ -74,6 +74,8 @@ TARGET_ARCH ?= $(shell uname -m | sed -e s/i.86/x86_32/ -e s/i86pc/x86_32/)
CFLAGS += $(CFLAGS_WARN) -fno-strict-aliasing -std=gnu99
# due to bug in gcc v4.2,3,?
CFLAGS += $(call cc-option,$(CC),-Wno-array-bounds,)
+# Due to a bug in gcc-11
+CFLAGS += $(call cc-option,$(CC),-Wno-stringop-overflow,)
ifeq ($(debug),y)