When a group is defined in a userlist section, only one 'users' option is
expected. But it was not tested. Thus it was possible to set several options
leading to a memory leak.
It is now tested, and it is not allowed to redefine the users option.
It was reported by Coverity in #2841: CID
1587771.
This patch could be backported to all stable versions.
while (*args[cur_arg]) {
if (strcmp(args[cur_arg], "users") == 0) {
+ if (ag->groupusers) {
+ ha_alert("parsing [%s:%d]: 'users' option already defined in '%s' name '%s'.\n",
+ file, linenum, args[0], args[1]);
+ err_code |= ERR_ALERT | ERR_FATAL;
+ free(ag->groupusers);
+ free(ag->name);
+ free(ag);
+ goto out;
+ }
ag->groupusers = strdup(args[cur_arg + 1]);
cur_arg += 2;
continue;