diff options
author | Patrick Georgi <patrick@georgi-clan.de> | 2014-08-09 17:06:20 +0200 |
---|---|---|
committer | Patrick Georgi <patrick@georgi-clan.de> | 2014-08-12 22:15:20 +0200 |
commit | dd1aab95a6eb74eac7ea0463f7933d186dbd0efb (patch) | |
tree | b5c709f80ae610cf493e3284f57c273de7478ade /util/nvramtool/cmos_lowlevel.c | |
parent | 42b1b8069c35a4e86772b600ea0264503bf20470 (diff) | |
download | coreboot-dd1aab95a6eb74eac7ea0463f7933d186dbd0efb.tar.xz |
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>
Diffstat (limited to 'util/nvramtool/cmos_lowlevel.c')
-rw-r--r-- | util/nvramtool/cmos_lowlevel.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/util/nvramtool/cmos_lowlevel.c b/util/nvramtool/cmos_lowlevel.c index ef0c3832b1..618e8d2b27 100644 --- a/util/nvramtool/cmos_lowlevel.c +++ b/util/nvramtool/cmos_lowlevel.c @@ -125,13 +125,16 @@ unsigned long long cmos_read(const cmos_entry_t * e) result = 0; 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)); if (!newstring) { out_of_memory(); } + memset(newstring, 0, strsz); + for (next_bit = 0, bits_left = length; bits_left; next_bit += nr_bits, bits_left -= nr_bits) { nr_bits = cmos_bit_op_strategy(bit + next_bit, |