tboot/tboot-gcc11.patch
Jeff Law f2bc8403f4 - Re-enable -Wstringop-overflow and instead make the problematical
pointer volatile to avoid the false positive diagnostic
2020-10-30 10:12:34 -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/tboot/common/loader.c b/tboot/common/loader.c
index cbb7def..6169564 100644
--- a/tboot/common/loader.c
+++ b/tboot/common/loader.c
@@ -59,7 +59,7 @@
#include <tpm.h>
/* copy of kernel/VMM command line so that can append 'tboot=0x1234' */
-static char *new_cmdline = (char *)TBOOT_KERNEL_CMDLINE_ADDR;
+static char * volatile new_cmdline = (char *)TBOOT_KERNEL_CMDLINE_ADDR;
/* MLE/kernel shared data page (in boot.S) */
extern tboot_shared_t _tboot_shared;