X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/b8be4a3f4cc6f82d13e62079813fef37eed24683..d3b22631c1a1258f658369629402b3625333f777:/src/newconf.c diff --git a/src/newconf.c b/src/newconf.c index e6a1d56..33bd7e0 100644 --- a/src/newconf.c +++ b/src/newconf.c @@ -471,7 +471,7 @@ conf_set_privset_privs(void *data) char *privs_old = privs; privs = rb_malloc(strlen(privs_old) + 1 + strlen(args->v.string) + 1); - strcpy(privs_old, privs); + strcpy(privs, privs_old); strcat(privs, " "); strcat(privs, args->v.string); @@ -487,13 +487,9 @@ conf_set_privset_privs(void *data) if (!set) { - conf_report_error("Warning -- unknown parent privilege set %s for %s; ignored.", yy_privset_extends, conf_cur_block_name); + conf_report_error("Warning -- unknown parent privilege set %s for %s; assuming defaults", yy_privset_extends, conf_cur_block_name); - rb_free(yy_privset_extends); - rb_free(privs); - - yy_privset_extends = NULL; - return; + set = privilegeset_get("default"); } privilegeset_extend(set, conf_cur_block_name != NULL ? conf_cur_block_name : "", privs, 0); @@ -564,6 +560,10 @@ conf_end_oper(struct TopConf *tc) return 0; } + + if (!yy_oper->privset) + yy_oper->privset = privilegeset_get("default"); + /* now, yy_oper_list contains a stack of oper_conf's with just user * and host in, yy_oper contains the rest of the information which * we need to copy into each element in yy_oper_list