summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Kardashevskiy <aik@ozlabs.ru>2021-01-27 19:38:30 +1100
committerAlexey Kardashevskiy <aik@ozlabs.ru>2021-02-12 13:46:16 +1100
commit1d1615b7b79109aedce51be3fd73baec040418b4 (patch)
tree168efa1668ea0cbf960cd71f400c0ade9aa4145c
parent09b201101478e6e1c858fc4ef4f859d88a2b8a49 (diff)
downloadqemu-SLOF-1d1615b7b79109aedce51be3fd73baec040418b4.tar.gz
libtpm: Compile with -Wextra
-Wextra enables a bunch of rather useful checks which this fixes. Note this adds MIN() in tpm_gpt_set_lba1() so it may potentially fail which is unlikely as the length comes from disk-label's block-size which is used in other places. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
-rw-r--r--lib/libtpm/tcgbios.c10
-rw-r--r--lib/libtpm/tpm_drivers.c5
2 files changed, 8 insertions, 7 deletions
diff --git a/lib/libtpm/tcgbios.c b/lib/libtpm/tcgbios.c
index 8e80811..f9e4602 100644
--- a/lib/libtpm/tcgbios.c
+++ b/lib/libtpm/tcgbios.c
@@ -356,7 +356,7 @@ tpm_simple_cmd(uint8_t locty, uint32_t ordinal, int param_size, uint16_t param,
memset(obuffer, 0, sizeof(obuffer));
ret = spapr_transmit(locty, &req.trqh, obuffer, &obuffer_len, to_t);
- ret = ret ? -1 : be32_to_cpu(trsh->errcode);
+ ret = ret ? -1 : (int) be32_to_cpu(trsh->errcode);
dprintf("Return from tpm_simple_cmd(%x, %x) = %x\n",
ordinal, param, ret);
@@ -382,7 +382,7 @@ tpm20_getcapability(uint32_t capability, uint32_t property, uint32_t count,
TPM_DURATION_TYPE_SHORT);
ret = (ret ||
rsize < be32_to_cpu(rsp->totlen)) ? -1
- : be32_to_cpu(rsp->errcode);
+ : (int) be32_to_cpu(rsp->errcode);
dprintf("TCGBIOS: Return value from sending TPM2_CC_GetCapability = 0x%08x\n",
ret);
@@ -664,7 +664,7 @@ static int tpm20_write_EfiSpecIdEventStruct(void)
};
struct tpms_pcr_selection *sel;
void *nsel, *end;
- int event_size;
+ unsigned event_size;
uint8_t *vendorInfoSize;
struct tpm_log_entry le = {
.hdr.eventtype = cpu_to_log32(EV_NO_ACTION),
@@ -1024,7 +1024,7 @@ void tpm_gpt_set_lba1(const uint8_t *addr, uint32_t length)
return;
memcpy(&uefi_gpt_data->EfiPartitionHeader,
- addr, sizeof(uefi_gpt_data->EfiPartitionHeader));
+ addr, MIN(sizeof(uefi_gpt_data->EfiPartitionHeader), length));
uefi_gpt_data->NumberOfPartitions = 0;
}
@@ -1252,7 +1252,7 @@ tpm20_set_pcrbanks(uint32_t active_banks)
ret = spapr_transmit(0, &trpa.hdr, &rsp, &resp_length,
TPM_DURATION_TYPE_SHORT);
- ret = ret ? -1 : be32_to_cpu(rsp.errcode);
+ ret = ret ? -1 : (int) be32_to_cpu(rsp.errcode);
return ret;
}
diff --git a/lib/libtpm/tpm_drivers.c b/lib/libtpm/tpm_drivers.c
index 0e13561..85cb309 100644
--- a/lib/libtpm/tpm_drivers.c
+++ b/lib/libtpm/tpm_drivers.c
@@ -357,8 +357,7 @@ static bool spapr_vtpm_senddata(const uint8_t *const data, uint32_t len)
static bool spapr_vtpm_waitresponseready(enum tpm_duration_type to_t)
{
- uint32_t timeout = tpm2_durations[to_t];
- int i;
+ uint32_t i, timeout = tpm2_durations[to_t];
if (vtpm_drv_error_get() != VTPM_DRV_ERROR_NO_FAILURE) {
printf("%s: VTPM CRQ: In failure mode\n", __func__);
@@ -426,6 +425,8 @@ int spapr_transmit(uint8_t locty, struct tpm_req_header *req,
void *respbuffer, uint32_t *respbufferlen,
enum tpm_duration_type to_t)
{
+ if (locty)
+ return -1;
if (!spapr_vtpm_senddata((uint8_t *)req, be32_to_cpu(req->totlen)) ||
!spapr_vtpm_waitresponseready(to_t) ||
!spapr_vtpm_readresponse(respbuffer, respbufferlen) ||