diff options
author | Dhaval Giani <dhaval@linux.vnet.ibm.com> | 2008-08-09 09:23:56 +0000 |
---|---|---|
committer | Dhaval Giani <dhaval@linux.vnet.ibm.com> | 2008-08-09 09:23:56 +0000 |
commit | db00ec5091a3ab9dd994b6366a57aa7ddfa196e5 (patch) | |
tree | 9ebd82956770d46db2c8b8cb60e127e8a7fc472b /api.c | |
parent | ef3fdbeccfd299b7e5eeeacaa1755ca444c6f548 (diff) | |
download | libcg-db00ec5091a3ab9dd994b6366a57aa7ddfa196e5.tar.gz libcg-db00ec5091a3ab9dd994b6366a57aa7ddfa196e5.tar.xz libcg-db00ec5091a3ab9dd994b6366a57aa7ddfa196e5.zip |
libcgroup: Fix segmentation fault in cgroup_init() -take2
An artifact from the time when libcgroup could not handle multiple
cgroup filesystems mounted at multiple points. It is very much possible
a subsystem is not mounted at that point. (FWIW, it is wrong even on a
single mount point, but I am quite surprised that no one hit it yet.)
V1->V2
A minor cleanup possible.
Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@120 4f4bb910-9a46-0410-90c8-c897d4f1cd53
Diffstat (limited to 'api.c')
-rw-r--r-- | api.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -193,9 +193,13 @@ int cgroup_init() if (!strcmp(ent->mnt_type, "cgroup")) { for (i = 0; controllers[i] != NULL; i++) { mntopt = hasmntopt(ent, controllers[i]); + + if (!mntopt) + continue; + mntopt = strtok_r(mntopt, ",", &strtok_buffer); - if (mntopt && - strcmp(mntopt, controllers[i]) == 0) { + + if (strcmp(mntopt, controllers[i]) == 0) { dbg("matched %s:%s\n", mntopt, controllers[i]); strcpy(cg_mount_table[found_mnt].name, |