Fix coverity warnings in firmware

Assorted minor code issues, which we should fix so any new errors stand
out more.

BUG=chromium:643769
BRANCH=none
TEST=make runtests

Change-Id: I84182df0d0e222f4f60206c621ec62e1ee283adb
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/380697
Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
This commit is contained in:
Randall Spangler
2016-09-02 12:10:31 -07:00
committed by chrome-bot
parent f7559e4b46
commit 1589f94dc1
6 changed files with 37 additions and 26 deletions

View File

@@ -123,6 +123,7 @@ struct bdb_key *bdb_create_key(const char *filename,
} else {
fprintf(stderr, "%s: bad key size from %s\n",
__func__, filename);
free(kdata);
return NULL;
}
key_size += kdata_size;

View File

@@ -123,13 +123,20 @@ int AllocAndReadGptData(VbExDiskHandle_t disk_handle, GptData *gptdata)
int WriteAndFreeGptData(VbExDiskHandle_t disk_handle, GptData *gptdata)
{
int skip_primary = 0;
GptHeader *header = (GptHeader *)gptdata->primary_header;
uint64_t entries_bytes =
(uint64_t)header->number_of_entries
* header->size_of_entry;
uint64_t entries_sectors = entries_bytes / gptdata->sector_bytes;
GptHeader *header;
uint64_t entries_bytes, entries_sectors;
int ret = 1;
header = (GptHeader *)gptdata->primary_header;
if (!header)
header = (GptHeader *)gptdata->secondary_header;
if (!header)
return 1; /* No headers at all, so nothing to write */
entries_bytes = (uint64_t)header->number_of_entries
* header->size_of_entry;
entries_sectors = entries_bytes / gptdata->sector_bytes;
/*
* TODO(namnguyen): Preserve padding between primary GPT header and
* its entries.

View File

@@ -223,6 +223,8 @@ uint32_t TlclRead(uint32_t index, void* data, uint32_t length) {
if (result == TPM_SUCCESS && length > 0) {
uint8_t* nv_read_cursor = response + kTpmResponseHeaderLength;
FromTpmUint32(nv_read_cursor, &result_length);
if (result_length > length)
result_length = length; /* Truncate to fit buffer */
nv_read_cursor += sizeof(uint32_t);
Memcpy(data, nv_read_cursor, result_length);
}

View File

@@ -1081,6 +1081,22 @@ VbError_t VbSelectAndLoadKernel(VbCommonParams *cparams,
VbExNvStorageRead(vnc.raw);
VbNvSetup(&vnc);
/* Fill in params for calls to LoadKernel() */
Memset(&p, 0, sizeof(p));
p.shared_data_blob = cparams->shared_data_blob;
p.shared_data_size = cparams->shared_data_size;
p.gbb_data = cparams->gbb_data;
p.gbb_size = cparams->gbb_size;
p.fwmp = &fwmp;
p.nv_context = &vnc;
/*
* This could be set to NULL, in which case the vboot header
* information about the load address and size will be used.
*/
p.kernel_buffer = kparams->kernel_buffer;
p.kernel_buffer_size = kparams->kernel_buffer_size;
/* Clear output params in case we fail */
kparams->disk_handle = NULL;
kparams->partition_number = 0;
@@ -1169,22 +1185,7 @@ VbError_t VbSelectAndLoadKernel(VbCommonParams *cparams,
}
}
/* Fill in params for calls to LoadKernel() */
Memset(&p, 0, sizeof(p));
p.shared_data_blob = cparams->shared_data_blob;
p.shared_data_size = cparams->shared_data_size;
p.gbb_data = cparams->gbb_data;
p.gbb_size = cparams->gbb_size;
p.fwmp = &fwmp;
/*
* This could be set to NULL, in which case the vboot header
* information about the load address and size will be used.
*/
p.kernel_buffer = kparams->kernel_buffer;
p.kernel_buffer_size = kparams->kernel_buffer_size;
p.nv_context = &vnc;
/* Set up boot flags */
p.boot_flags = 0;
if (shared->flags & VBSD_BOOT_DEV_SWITCH_ON)
p.boot_flags |= BOOT_FLAG_DEVELOPER;

View File

@@ -419,14 +419,14 @@ int VerifyVmlinuzInsideKBlob(uint64_t kblob, uint64_t kblob_size,
uint64_t VbSharedDataReserve(VbSharedDataHeader *header, uint64_t size)
{
uint64_t offs = header->data_used;
VBDEBUG(("VbSharedDataReserve %d bytes at %d\n", (int)size, (int)offs));
if (!header || size > header->data_size - header->data_used) {
VBDEBUG(("VbSharedData buffer out of space.\n"));
return 0; /* Not initialized, or not enough space left. */
}
uint64_t offs = header->data_used;
VBDEBUG(("VbSharedDataReserve %d bytes at %d\n", (int)size, (int)offs));
header->data_used += size;
return offs;
}

View File

@@ -24,7 +24,7 @@ static char fmtbuf[MAX_FMT+1];
static const char *fixfmt(const char *format)
{
int i;
for(i=0; i<MAX_FMT && format[i]; i++) {
for(i=0; i<sizeof(fmtbuf)-1 && format[i]; i++) {
fmtbuf[i] = format[i];
if(format[i] == '%' && format[i+1] == 'L') {
fmtbuf[i+1] = 'l';