#define inst ((rlm_mschap_t *)instance)
if (inst->xlat_name) {
xlat_unregister(inst->xlat_name, mschap_xlat);
- free(inst->xlat_name);
}
free(instance);
return 0;
*/
static int mschap_instantiate(CONF_SECTION *conf, void **instance)
{
- const char *xlat_name;
rlm_mschap_t *inst;
inst = *instance = rad_malloc(sizeof(*inst));
/*
* Create the dynamic translation.
*/
- if (cf_section_name1(conf))
- xlat_register(cf_section_name1(conf),mschap_xlat, inst);
-
- if ((xlat_name = cf_section_name2(conf)) != NULL)
- xlat_register(xlat_name, mschap_xlat, inst);
- if (xlat_name == NULL)
- xlat_name = cf_section_name1(conf);
- if (xlat_name)
- inst->xlat_name = strdup(xlat_name);
+ inst->xlat_name = cf_section_name2(conf);
+ if (!inst->xlat_name) inst->xlat_name = cf_section_name1(conf);
+ xlat_register(inst->xlat_name, mschap_xlat, inst);
/*
* For backwards compatibility
*/
if (!dict_valbyname(PW_AUTH_TYPE, inst->xlat_name)) {
inst->auth_type = "MS-CHAP";
+ } else {
+ inst->auth_type = inst->xlat_name;
}
return 0;