You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
From 1078505afde08447226d9439d2ec1fd822afba82 Mon Sep 17 00:00:00 2001 |
|
From: =?UTF-8?q?Nikola=20Forr=C3=B3?= <nforro@redhat.com> |
|
Date: Wed, 9 Dec 2015 11:00:30 +0100 |
|
Subject: [PATCH] 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. |
|
--- |
|
src/api.c | 8 ++++++-- |
|
1 file changed, 6 insertions(+), 2 deletions(-) |
|
|
|
diff --git a/src/api.c b/src/api.c |
|
index e9500e0..aa912b6 100644 |
|
--- a/src/api.c |
|
+++ b/src/api.c |
|
@@ -2699,13 +2699,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++) { |
|
-- |
|
2.13.6 |
|
|
|
|