aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndi Kleen <ak@linux.intel.com>2016-08-24 12:23:29 -0700
committerAndi Kleen <ak@linux.intel.com>2016-08-24 12:23:29 -0700
commit12b76da1b5009a52bd789a601cb39c16eb8553f5 (patch)
tree4f2630a153592d5425dd8d1e1af4177ac142cd42
parent56d98f2d2eb69b60eaa4783004bb4caecfc8c149 (diff)
downloadmcelog-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.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sysfs.c b/sysfs.c
index 3255a58..93aae82 100644
--- a/sysfs.c
+++ b/sysfs.c
@@ -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;
}