861ac185a6
```sh git grep -l '^patch_args=-Np0' "srcpkgs/$1*/template" | while read template; do for p in ${template%/template}/patches/*; do sed -i ' \,^[+-][+-][+-] /dev/null,b /^[*-]\+ [0-9]\+\(,[0-9]\+\)\? [*-]\+$/b s,^[*][*][*] ,&a/, /^--- /{ s,\(^--- \)\(./\)*,\1a/, s,[.][Oo][Rr][Ii][Gg]\([ /]\),\1, s/[.][Oo][Rr][Ii][Gg]$// s/[.]patched[.]\([^.]\)/.\1/ h } /^+++ -/{ g s/^--- a/+++ b/ b } s,\(^+++ \)\(./\)*,\1b/, ' "$p" done sed -i '/^patch_args=/d' $template done ```
38 lines
957 B
Diff
38 lines
957 B
Diff
Date: Tue, 8 Dec 2015 16:53:41 +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 d6c9d3a..ef796ac 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++) {
|
|
--
|
|
2.10.2
|
|
|