[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5.2 for 2.13 1/4] tpm: extend TPM emulator with
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [Qemu-devel] [PATCH v5.2 for 2.13 1/4] tpm: extend TPM emulator with state migration support |
Date: |
Thu, 22 Mar 2018 09:07:15 +0000 |
User-agent: |
Mutt/1.9.2 (2017-12-15) |
* Stefan Berger (address@hidden) wrote:
> On 03/21/2018 01:14 PM, Dr. David Alan Gilbert wrote:
> > * Stefan Berger (address@hidden) wrote:
> > > +
> > > + if (totlength > 0) {
> > > + tsb->buffer = g_try_malloc(totlength);
> > > + if (!tsb->buffer) {
> > > + error_report("tpm-emulator: Out of memory allocating %u
> > > bytes",
> > > + totlength);
> > > + return -1;
> > > + }
> > > +
> > > + n = qemu_chr_fe_read_all(&tpm_emu->ctrl_chr, tsb->buffer,
> > > totlength);
> > > + if (n != totlength) {
> > > + error_report("tpm-emulator: Could not read stateblob (type
> > > %d); "
> > > + "expected %u bytes, got %zd",
> > > + type, totlength, n);
> > I think you need to free tsb->buffer here.
>
> tpm_emulator_get_state_blobs() below clears all 3 buffers in case one error
> is encountered.
Ah OK.
Dave
> >
> > Other than that, I think:
> >
> > Reviewed-by: Dr. David Alan Gilbert <address@hidden>
> >
> >
> > > + return -1;
> > > + }
> > > + }
> > > + tsb->size = totlength;
> > > +
> > > + trace_tpm_emulator_get_state_blob(type, tsb->size, *flags);
> > > +
> > > + return 0;
> > > +}
> > > +
> > > +static int tpm_emulator_get_state_blobs(TPMEmulator *tpm_emu)
> > > +{
> > > + TPMBlobBuffers *state_blobs = &tpm_emu->state_blobs;
> > > +
> > > + if (tpm_emulator_get_state_blob(tpm_emu, PTM_BLOB_TYPE_PERMANENT,
> > > + &state_blobs->permanent,
> > > + &state_blobs->permanent_flags) < 0 ||
> > > + tpm_emulator_get_state_blob(tpm_emu, PTM_BLOB_TYPE_VOLATILE,
> > > + &state_blobs->volatil,
> > > + &state_blobs->volatil_flags) < 0 ||
> > > + tpm_emulator_get_state_blob(tpm_emu, PTM_BLOB_TYPE_SAVESTATE,
> > > + &state_blobs->savestate,
> > > + &state_blobs->savestate_flags) < 0) {
> > > + goto err_exit;
> > > + }
> > > +
> > > + return 0;
> > > +
> > > + err_exit:
> > > + tpm_sized_buffer_reset(&state_blobs->volatil);
> > > + tpm_sized_buffer_reset(&state_blobs->permanent);
> > > + tpm_sized_buffer_reset(&state_blobs->savestate);
>
> ^^^ here
>
> > > +
> > > + return -1;
> > > +}
>
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK