nvramtool: plug some memory leaks

Change-Id: I8f672b872862d3448ccd2cf28fd3c05b0108ff8b
Found-by: Coverity Scan
Signed-off-by: Patrick Georgi <patrick@georgi-clan.de>
Reviewed-on: http://review.coreboot.org/6561
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Patrick Georgi 2014-08-09 17:06:20 +02:00
parent 42b1b8069c
commit dd1aab95a6
2 changed files with 8 additions and 3 deletions

View File

@ -125,13 +125,16 @@ unsigned long long cmos_read(const cmos_entry_t * e)
result = 0; result = 0;
if (e->config == CMOS_ENTRY_STRING) { if (e->config == CMOS_ENTRY_STRING) {
char *newstring = calloc(1, (length + 7) / 8); int strsz = (length + 7) / 8;
char *newstring = alloca(strsz);
unsigned usize = (8 * sizeof(unsigned long long)); unsigned usize = (8 * sizeof(unsigned long long));
if (!newstring) { if (!newstring) {
out_of_memory(); out_of_memory();
} }
memset(newstring, 0, strsz);
for (next_bit = 0, bits_left = length; for (next_bit = 0, bits_left = length;
bits_left; next_bit += nr_bits, bits_left -= nr_bits) { bits_left; next_bit += nr_bits, bits_left -= nr_bits) {
nr_bits = cmos_bit_op_strategy(bit + next_bit, nr_bits = cmos_bit_op_strategy(bit + next_bit,

View File

@ -95,7 +95,7 @@ int prepare_cmos_write(const cmos_entry_t * e, const char value_str[],
const cmos_enum_t *q; const cmos_enum_t *q;
unsigned long long out; unsigned long long out;
const char *p; const char *p;
char *memory; char *memory = NULL;
int negative, result, found_one; int negative, result, found_one;
if ((result = prepare_cmos_op_common(e)) != OK) if ((result = prepare_cmos_op_common(e)) != OK)
@ -155,8 +155,10 @@ int prepare_cmos_write(const cmos_entry_t * e, const char value_str[],
BUG(); BUG();
} }
if ((e->length < (8 * sizeof(*value))) && (out >= (1ull << e->length))) if ((e->length < (8 * sizeof(*value))) && (out >= (1ull << e->length))) {
if (memory) free(memory);
return CMOS_OP_VALUE_TOO_WIDE; return CMOS_OP_VALUE_TOO_WIDE;
}
*value = out; *value = out;
return OK; return OK;