Blame SOURCES/libcgroup-0.41-infinite-loop.patch

f21e0e
From 1078505afde08447226d9439d2ec1fd822afba82 Mon Sep 17 00:00:00 2001
f21e0e
From: =?UTF-8?q?Nikola=20Forr=C3=B3?= <nforro@redhat.com>
f21e0e
Date: Wed, 9 Dec 2015 11:00:30 +0100
f21e0e
Subject: [PATCH] api.c: fix infinite loop
f21e0e
f21e0e
If getgrnam or getpwuid functions failed, the program entered
f21e0e
an infinite loop, because the rule pointer was never advanced.
f21e0e
This is now fixed by updating the pointer before continuing
f21e0e
to the next iteration.
f21e0e
---
f21e0e
 src/api.c | 8 ++++++--
f21e0e
 1 file changed, 6 insertions(+), 2 deletions(-)
f21e0e
f21e0e
diff --git a/src/api.c b/src/api.c
f21e0e
index e9500e0..aa912b6 100644
f21e0e
--- a/src/api.c
f21e0e
+++ b/src/api.c
f21e0e
@@ -2699,13 +2699,17 @@ static struct cgroup_rule *cgroup_find_matching_rule_uid_gid(uid_t uid,
f21e0e
 			/* Get the group data. */
f21e0e
 			sp = &(rule->username[1]);
f21e0e
 			grp = getgrnam(sp);
f21e0e
-			if (!grp)
f21e0e
+			if (!grp) {
f21e0e
+				rule = rule->next;
f21e0e
 				continue;
f21e0e
+			}
f21e0e
 
f21e0e
 			/* Get the data for UID. */
f21e0e
 			usr = getpwuid(uid);
f21e0e
-			if (!usr)
f21e0e
+			if (!usr) {
f21e0e
+				rule = rule->next;
f21e0e
 				continue;
f21e0e
+			}
f21e0e
 
f21e0e
 			/* If UID is a member of group, we matched. */
f21e0e
 			for (i = 0; grp->gr_mem[i]; i++) {
f21e0e
-- 
f21e0e
2.13.6
f21e0e