summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/passdb/pdb_interface.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/source3/passdb/pdb_interface.c b/source3/passdb/pdb_interface.c
index 337b563c54..57424bb2d8 100644
--- a/source3/passdb/pdb_interface.c
+++ b/source3/passdb/pdb_interface.c
@@ -34,6 +34,8 @@ static void lazy_initialize_passdb(void)
initialized = True;
}
+static struct pdb_init_function_entry *pdb_find_backend_entry(const char *name);
+
BOOL smb_register_passdb(const char *name, pdb_init_function init, int version)
{
struct pdb_init_function_entry *entry = backends;
@@ -43,13 +45,9 @@ BOOL smb_register_passdb(const char *name, pdb_init_function init, int version)
DEBUG(5,("Attempting to register passdb backend %s\n", name));
- /* Check for duplicates */
- while(entry) {
- if(strcasecmp(name, entry->name) == 0) {
- DEBUG(0,("There already is a passdb backend registered with the name %s!\n", name));
- return False;
- }
- entry = entry->next;
+ if (pdb_find_backend_entry(name)) {
+ DEBUG(0,("There already is a passdb backend registered with the name %s!\n", name));
+ return False;
}
entry = smb_xmalloc(sizeof(struct pdb_init_function_entry));
@@ -64,12 +62,9 @@ BOOL smb_register_passdb(const char *name, pdb_init_function init, int version)
static struct pdb_init_function_entry *pdb_find_backend_entry(const char *name)
{
struct pdb_init_function_entry *entry = backends;
- pstring stripped;
-
- module_path_get_name(name, stripped);
while(entry) {
- if (strequal(entry->name, stripped)) return entry;
+ if (strcasecmp(entry->name, name) == 0) return entry;
entry = entry->next;
}