Fixes some resource leaks detected by valgrind and coverity scan.

diff --git a/src/devices/ahci.cpp b/src/devices/ahci.cpp
index ac06460..7f704b6 100644
--- a/src/devices/ahci.cpp
+++ b/src/devices/ahci.cpp
@@ -64,8 +64,10 @@ static string disk_name(char *path, char *target,
char *shortname)
                sprintf(line, "%s/%s/model", pathname, dirent->d_name);
                file = fopen(line, "r");
                if (file) {
-                       if (fgets(line, 4096, file) == NULL)
+                       if (fgets(line, 4096, file) == NULL) {
+                               fclose(file);
                                break;
+                       }
                        fclose(file);
                        c = strchr(line, '\n');
                        if (c)
diff --git a/src/devices/devfreq.cpp b/src/devices/devfreq.cpp
index e16951c..23c4b0c 100644
--- a/src/devices/devfreq.cpp
+++ b/src/devices/devfreq.cpp
@@ -238,6 +238,7 @@ void create_all_devfreq_devices(void)

        callback fn = &devfreq_dev_callback;
        process_directory(p.c_str(), fn);
+       closedir(dir);
 }

 void initialize_devfreq(void)
diff --git a/src/perf/perf_bundle.cpp b/src/perf/perf_bundle.cpp
index b0e982b..cf1ae11 100644
--- a/src/perf/perf_bundle.cpp
+++ b/src/perf/perf_bundle.cpp
@@ -142,8 +142,10 @@ static void parse_event_format(const char *event_name)

        buf = read_file(file);
        free(file);
-       if (!buf)
+       if (!buf) {
+               free(name);
                return;
+       }

        pevent_parse_event(perf_event::pevent, buf, strlen(buf), sys);
        free(name);
diff --git a/src/tuning/bluetooth.cpp b/src/tuning/bluetooth.cpp
index e0bdf12..5100a8a 100644
--- a/src/tuning/bluetooth.cpp
+++ b/src/tuning/bluetooth.cpp
@@ -144,8 +144,10 @@ int bt_tunable::good_bad(void)
                if (file) {
                        char line[2048];
                        /* first line is standard header */
-                       if (fgets(line, 2047, file) == NULL)
+                       if (fgets(line, 2047, file) == NULL) {
+                               pclose(file);
                                goto out;
+                       }
                        memset(line, 0, 2048);
                        if (fgets(line, 2047, file) == NULL) {
                                result = last_check_result = TUNE_GOOD;



--
Thanks,
-Meraj

Attachment: patch
Description: Binary data

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to