diff options
-rw-r--r-- | source3/passdb/pdb_interface.c | 17 |
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; } |