* Stefan Berger (stef...@linux.vnet.ibm.com) wrote: > On 03/21/2018 01:14 PM, Dr. David Alan Gilbert wrote: > > * Stefan Berger (stef...@linux.vnet.ibm.com) 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 <dgilb...@redhat.com> > > > > > > > + 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 / dgilb...@redhat.com / Manchester, UK