return 0;
}
-int ldap_pre_settings_post_check(const struct ldap_pre_settings *set, const char **error_r)
+int ldap_pre_settings_post_check(const struct ldap_pre_settings *set,
+ enum db_ldap_lookup_type type,
+ const char **error_r)
{
if (*set->ldap_base == '\0') {
*error_r = "No ldap_base given";
return -1;
}
+ switch (type) {
+ case DB_LDAP_LOOKUP_TYPE_PASSDB:
+ if (set->passdb_ldap_filter[0] == '\0') {
+ *error_r = "No passdb_ldap_filter given";
+ return -1;
+ }
+ break;
+ case DB_LDAP_LOOKUP_TYPE_USERDB:
+ if (set->userdb_ldap_filter[0] == '\0') {
+ *error_r = "No userdb_ldap_filter given";
+ return -1;
+ }
+ break;
+ case DB_LDAP_LOOKUP_TYPE_ITERATE:
+ if (set->userdb_ldap_iterate_filter[0] == '\0') {
+ *error_r = "No userdb_ldap_iterate_filter given";
+ return -1;
+ }
+ break;
+ }
return 0;
}
#ifndef DB_LDAP_SETTINGS_H
#define DB_LDAP_SETTINGS_H
+enum db_ldap_lookup_type {
+ DB_LDAP_LOOKUP_TYPE_PASSDB,
+ DB_LDAP_LOOKUP_TYPE_USERDB,
+ DB_LDAP_LOOKUP_TYPE_ITERATE,
+};
+
struct ldap_settings {
pool_t pool;
extern const struct setting_parser_info ldap_post_setting_parser_info;
int ldap_setting_post_check(const struct ldap_settings *set, const char **error_r);
-int ldap_pre_settings_post_check(const struct ldap_pre_settings *set, const char **error_r);
+int ldap_pre_settings_post_check(const struct ldap_pre_settings *set,
+ enum db_ldap_lookup_type type,
+ const char **error_r);
#endif
const struct ldap_pre_settings *ldap_pre = NULL;
if (settings_get(event, &ldap_pre_setting_parser_info, 0,
&ldap_pre, &error) < 0 ||
- ldap_pre_settings_post_check(ldap_pre, &error) < 0) {
+ ldap_pre_settings_post_check(ldap_pre, DB_LDAP_LOOKUP_TYPE_PASSDB,
+ &error) < 0) {
e_error(event, "%s", error);
callback(PASSDB_RESULT_INTERNAL_FAILURE, request);
settings_free(ldap_pre);
const struct ldap_pre_settings *ldap_pre = NULL;
if (settings_get(event, &ldap_pre_setting_parser_info, 0,
&ldap_pre, &error) < 0 ||
- ldap_pre_settings_post_check(ldap_pre, &error) < 0) {
+ ldap_pre_settings_post_check(ldap_pre, DB_LDAP_LOOKUP_TYPE_PASSDB,
+ &error) < 0) {
e_error(event, "%s", error);
passdb_ldap_request_fail(ldap_request, PASSDB_RESULT_INTERNAL_FAILURE);
settings_free(ldap_pre);
const struct ldap_pre_settings *ldap_pre = NULL;
if (settings_get(event, &ldap_pre_setting_parser_info, 0,
&ldap_pre, &error) < 0 ||
- ldap_pre_settings_post_check(ldap_pre, &error) < 0) {
+ ldap_pre_settings_post_check(ldap_pre, DB_LDAP_LOOKUP_TYPE_USERDB,
+ &error) < 0) {
e_error(event, "%s", error);
callback(USERDB_RESULT_INTERNAL_FAILURE, auth_request);
settings_free(ldap_pre);
const struct ldap_pre_settings *ldap_pre = NULL;
if (settings_get(event, &ldap_pre_setting_parser_info, 0,
&ldap_pre, &error) < 0 ||
- ldap_pre_settings_post_check(ldap_pre, &error) < 0) {
+ ldap_pre_settings_post_check(ldap_pre, DB_LDAP_LOOKUP_TYPE_ITERATE,
+ &error) < 0) {
e_error(event, "%s", error);
settings_free(ldap_pre);
ctx->ctx.failed = TRUE;