From: Nikola Forró Date: Tue, 8 Dec 2015 15:53:41 +0000 (+0100) Subject: api.c: fix infinite loop X-Git-Tag: v0.42.rc1~38 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1bce3ab63968022e97599bbd73ec1a66aacf45bc;p=thirdparty%2Flibcgroup.git api.c: fix infinite loop If getgrnam or getpwuid functions failed, the program entered an infinite loop, because the rule pointer was never advanced. This is now fixed by updating the pointer before continuing to the next iteration. --- diff --git a/src/api.c b/src/api.c index d6c9d3a9..ef796acd 100644 --- a/src/api.c +++ b/src/api.c @@ -2775,13 +2775,17 @@ static struct cgroup_rule *cgroup_find_matching_rule_uid_gid(uid_t uid, /* Get the group data. */ sp = &(rule->username[1]); grp = getgrnam(sp); - if (!grp) + if (!grp) { + rule = rule->next; continue; + } /* Get the data for UID. */ usr = getpwuid(uid); - if (!usr) + if (!usr) { + rule = rule->next; continue; + } /* If UID is a member of group, we matched. */ for (i = 0; grp->gr_mem[i]; i++) {