util: fix condition_free_list_type()

This fixes a bug introduced by c4f58deab5.

Closes oss-fuzz#13878, oss-fuzz#13882, oss-fuzz#13884, oss-fuzz#13886, and
oss-fuzz#13888.
This commit is contained in:
Yu Watanabe
2019-03-24 00:34:33 +09:00
parent 16b4623620
commit 7bb55ed099
+8 -8
View File
@@ -77,17 +77,17 @@ void condition_free(Condition *c) {
free(c);
}
Condition* condition_free_list_type(Condition *first, ConditionType type) {
Condition *c, *n, *r = NULL;
Condition* condition_free_list_type(Condition *head, ConditionType type) {
Condition *c, *n;
LIST_FOREACH_SAFE(conditions, c, n, first)
if (type < 0 || c->type == type)
LIST_FOREACH_SAFE(conditions, c, n, head)
if (type < 0 || c->type == type) {
LIST_REMOVE(conditions, head, c);
condition_free(c);
else if (!r)
r = c;
}
assert(type >= 0 || !r);
return r;
assert(type >= 0 || !head);
return head;
}
static int condition_test_kernel_command_line(Condition *c) {