swtpm/swtpm-gcc11.patch

19 lines
749 B
Diff

diff --git a/src/swtpm/ctrlchannel.c b/src/swtpm/ctrlchannel.c
index f76a68b..f847960 100644
--- a/src/swtpm/ctrlchannel.c
+++ b/src/swtpm/ctrlchannel.c
@@ -691,7 +691,12 @@ int ctrlchannel_process_fd(int fd,
data = (ptm_hdata *)&output.body;
- data->u.resp.tpm_result = htobe32(res);
+ /* gcc-11 flags this code with a diagnostic. I'm not sure the diagnostic
+ is valid, but regardless, this is reasonable workaround. Essentially
+ we are trying to obfuscate the above cast and store below from the
+ analysis for out of bounds object access diagnostics. */
+ uint32_t __x = htobe32(res);
+ memcpy (&data->u.resp.tpm_result, &__x, sizeof (__x));
out_len = sizeof(data->u.resp.tpm_result);
break;