`cfg_map_findclause()` did not check whether a clause existed before
dereferencing it, which could lead to a NULL dereference. Add the
missing check to prevent this.
In practice, this was not triggering any known bug, since
`cfg_map_findclause()` is only called in contexts where the clause is
known to exist.
REQUIRE(name != NULL);
found = cfg_map_firstclause(map, &clauses, &idx);
- while (name != NULL && strcasecmp(name, found->name)) {
+ while (found != NULL && name != NULL && strcasecmp(name, found->name)) {
found = cfg_map_nextclause(map, &clauses, &idx);
}
+ if (found == NULL) {
+ return found;
+ }
+
return ((cfg_clausedef_t *)clauses) + idx;
}