summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2007-04-23 06:10:22 +0000
committerGerald Carter <jerry@samba.org>2007-04-23 06:10:22 +0000
commit17cff80a34f5c17b16042a4e443df161cec14eb1 (patch)
tree0da6ee0cfeb2521a8e5b2531ab43d729c07b7fb8
parent72b4c8d3127f232434d985543e6f9d812cc9adea (diff)
downloadsamba-17cff80a34f5c17b16042a4e443df161cec14eb1.tar.gz
r22473: Correct fix for setting a default compat tdb idmap backend.
Previous code would always fill in "idmap backend = tdb" even if you defined idmap domains. My fault. I should have tested the original patch more before committing.
-rw-r--r--source/nsswitch/idmap.c59
1 files changed, 30 insertions, 29 deletions
diff --git a/source/nsswitch/idmap.c b/source/nsswitch/idmap.c
index 7a74f744b46..7589ee66abd 100644
--- a/source/nsswitch/idmap.c
+++ b/source/nsswitch/idmap.c
@@ -289,40 +289,42 @@ NTSTATUS idmap_init(void)
dom_list = lp_idmap_domains();
- if ( dom_list && lp_idmap_backend() ) {
- DEBUG(0, ("WARNING: idmap backend and idmap domains are "
- "mutually excusive!\n"));
- DEBUGADD(0,("idmap backend option will be IGNORED!\n"));
- } else if ( lp_idmap_backend() ) {
- const char **compat_list = lp_idmap_backend();
+ if ( lp_idmap_backend() ) {
+ const char **compat_list = lp_idmap_backend();
char *p = NULL;
const char *q = NULL;
- compat = 1;
+ if ( dom_list ) {
+ DEBUG(0, ("WARNING: idmap backend and idmap domains are "
+ "mutually excusive!\n"));
+ DEBUGADD(0,("idmap backend option will be IGNORED!\n"));
+ } else {
+ compat = 1;
- if ( (compat_backend = talloc_strdup( idmap_ctx, *compat_list )) == NULL ) {
- ret = NT_STATUS_NO_MEMORY;
- goto done;
- }
+ if ( (compat_backend = talloc_strdup( idmap_ctx, *compat_list )) == NULL ) {
+ ret = NT_STATUS_NO_MEMORY;
+ goto done;
+ }
- /* strip any leading idmap_ prefix of */
- if (strncmp(*compat_list, "idmap_", 6) == 0 ) {
- q = *compat_list += 6;
- DEBUG(0, ("WARNING: idmap backend uses obsolete and "
- "deprecated 'idmap_' prefix.\n"
- "Please replace 'idmap_%s' by '%s' in %s\n",
- q, q, dyn_CONFIGFILE));
- compat_backend = talloc_strdup( idmap_ctx, q);
- } else {
- compat_backend = talloc_strdup( idmap_ctx, *compat_list);
- }
+ /* strip any leading idmap_ prefix of */
+ if (strncmp(*compat_list, "idmap_", 6) == 0 ) {
+ q = *compat_list += 6;
+ DEBUG(0, ("WARNING: idmap backend uses obsolete and "
+ "deprecated 'idmap_' prefix.\n"
+ "Please replace 'idmap_%s' by '%s' in %s\n",
+ q, q, dyn_CONFIGFILE));
+ compat_backend = talloc_strdup( idmap_ctx, q);
+ } else {
+ compat_backend = talloc_strdup( idmap_ctx, *compat_list);
+ }
- /* separate the backend and module arguements */
- if ((p = strchr(compat_backend, ':')) != NULL) {
- *p = '\0';
- compat_params = p + 1;
- }
- } else {
+ /* separate the backend and module arguements */
+ if ((p = strchr(compat_backend, ':')) != NULL) {
+ *p = '\0';
+ compat_params = p + 1;
+ }
+ }
+ } else if ( !dom_list ) {
/* Back compatible: without idmap domains and explicit
idmap backend. Taking default idmap backend: tdb */
@@ -331,7 +333,6 @@ NTSTATUS idmap_init(void)
compat_params = compat_backend;
}
-
if ( ! dom_list) {
dom_list = idmap_default_domain;
}