diff options
author | Andi Kleen <ak@linux.intel.com> | 2016-08-24 12:23:29 -0700 |
---|---|---|
committer | Andi Kleen <ak@linux.intel.com> | 2016-08-24 12:23:29 -0700 |
commit | 12b76da1b5009a52bd789a601cb39c16eb8553f5 (patch) | |
tree | 4f2630a153592d5425dd8d1e1af4177ac142cd42 | |
parent | 56d98f2d2eb69b60eaa4783004bb4caecfc8c149 (diff) | |
download | mcelog-12b76da1b5009a52bd789a601cb39c16eb8553f5.tar.gz |
Fix use after free in error path
Found by clang static analyzer.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
-rw-r--r-- | sysfs.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -81,10 +81,12 @@ unsigned read_field_map(char *base, char *name, struct map *map) if (!strcmp(val, map->name)) break; } - free(val); - if (map->name) + if (map->name) { + free(val); return map->value; + } Eprintf("sysfs field %s/%s has unknown string value `%s'\n", base, name, val); + free(val); return -1; } |