mirror of
https://github.com/torvalds/linux.git
synced 2024-12-01 16:41:39 +00:00
cpupower: bench: parse.c: fix several resource leaks
The error handling in prepare_output has several issues with resource leaks. Ensure that filename is free'd and the directory stream DIR is closed before returning. Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Thomas Renninger <trenn@suse.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
04b03594c7
commit
983d9e065b
@ -81,14 +81,18 @@ FILE *prepare_output(const char *dirname)
|
||||
|
||||
len = strlen(dirname) + 30;
|
||||
filename = malloc(sizeof(char) * len);
|
||||
if (!filename) {
|
||||
perror("malloc");
|
||||
goto out_dir;
|
||||
}
|
||||
|
||||
if (uname(&sysdata) == 0) {
|
||||
len += strlen(sysdata.nodename) + strlen(sysdata.release);
|
||||
filename = realloc(filename, sizeof(char) * len);
|
||||
|
||||
if (filename == NULL) {
|
||||
if (!filename) {
|
||||
perror("realloc");
|
||||
return NULL;
|
||||
goto out_dir;
|
||||
}
|
||||
|
||||
snprintf(filename, len - 1, "%s/benchmark_%s_%s_%li.log",
|
||||
@ -104,12 +108,16 @@ FILE *prepare_output(const char *dirname)
|
||||
if (output == NULL) {
|
||||
perror("fopen");
|
||||
fprintf(stderr, "error: unable to open logfile\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
fprintf(stdout, "Logfile: %s\n", filename);
|
||||
|
||||
free(filename);
|
||||
fprintf(output, "#round load sleep performance powersave percentage\n");
|
||||
out:
|
||||
free(filename);
|
||||
out_dir:
|
||||
closedir(dir);
|
||||
return output;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user