This is especially important to verify() functions that parse the settings
and store data permanently based on them, e.g. pop3_delete_flag or
imap_client_workarounds, which effectively couldn't be overwritten by userdb.
user->flags = flags;
user->set_parser = settings_parser_dup(set_parser, user_pool);
- if (!settings_parser_check(user->set_parser, user_pool, &error))
- i_panic("settings_parser_check() failed: %s", error);
sets = master_service_settings_parser_get_others(master_service,
user->set_parser);
ret = -2;
}
}
+ if (ret > 0 && !settings_parser_check(user->set_parser, user_pool, &error)) {
+ i_error("Invalid settings (probably caused by userdb): %s", error);
+ *error_r = ERRSTR_INVALID_USER_SETTINGS;
+ ret = -2;
+ }
pool_unref(&temp_pool);
/* load per-user plugins */