summaryrefslogtreecommitdiffstats
path: root/libprocessgroup
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2014-08-20 14:11:13 -0700
committerColin Cross <ccross@android.com>2014-08-20 14:11:13 -0700
commitc15dd044705aa86f63b2642c1439d5f943a80d18 (patch)
treef9e818f6742117f94440c219f71d0d8521a586fc /libprocessgroup
parent342a2264b96ab05dc8fdbfa8bbe354ce2f4b06ca (diff)
downloadsystem_core-c15dd044705aa86f63b2642c1439d5f943a80d18.zip
system_core-c15dd044705aa86f63b2642c1439d5f943a80d18.tar.gz
system_core-c15dd044705aa86f63b2642c1439d5f943a80d18.tar.bz2
processgroup: close directories opened by removeAllProcessGroups()
removeAllProcessGroups and removeUidProcessGroups were calling opendir, but never called closedir. This would leave a leaked file descriptor for every /acct/uid_* directory that existed at boot. Change-Id: Ia08eccd42d6ad7a6c1c78402519ac2e53b4fc83a
Diffstat (limited to 'libprocessgroup')
-rw-r--r--libprocessgroup/processgroup.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/libprocessgroup/processgroup.cpp b/libprocessgroup/processgroup.cpp
index c32e741..f7bc2cd 100644
--- a/libprocessgroup/processgroup.cpp
+++ b/libprocessgroup/processgroup.cpp
@@ -171,6 +171,7 @@ static void removeUidProcessGroups(const char *uid_path)
SLOGV("removing %s\n", path);
rmdir(path);
}
+ closedir(uid);
}
}
@@ -180,8 +181,7 @@ void removeAllProcessGroups()
DIR *root = opendir(PROCESSGROUP_CGROUP_PATH);
if (root == NULL) {
SLOGE("failed to open %s: %s", PROCESSGROUP_CGROUP_PATH, strerror(errno));
- }
- if (root != NULL) {
+ } else {
struct dirent cur;
struct dirent *dir;
while ((readdir_r(root, &cur, &dir) == 0) && dir) {
@@ -199,6 +199,7 @@ void removeAllProcessGroups()
SLOGV("removing %s\n", path);
rmdir(path);
}
+ closedir(root);
}
}