summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2007-04-10 21:14:44 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:19:17 -0500
commit43401cf93baef04b5f8aaa8e6fec8ee49af61ffa (patch)
tree7afa1cb87985483a415f735c044373d9f053ece3
parentd1ec6909727698f94c3c0228797a1d070dc17fa1 (diff)
downloadsamba-43401cf93baef04b5f8aaa8e6fec8ee49af61ffa.tar.gz
samba-43401cf93baef04b5f8aaa8e6fec8ee49af61ffa.tar.bz2
samba-43401cf93baef04b5f8aaa8e6fec8ee49af61ffa.zip
r22158: BUG 4501 (partial): Fix a crash caused by not using the
nss_info_{rfc2307,sfu} plugin with idmap_ad. (This used to be commit f640f056bfbf1013d6b3df89632109011fc42361)
-rw-r--r--source3/nsswitch/idmap_ad.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/source3/nsswitch/idmap_ad.c b/source3/nsswitch/idmap_ad.c
index 5ec543819e..eff3545d15 100644
--- a/source3/nsswitch/idmap_ad.c
+++ b/source3/nsswitch/idmap_ad.c
@@ -164,14 +164,10 @@ static NTSTATUS idmap_ad_initialize(struct idmap_domain *dom, const char *params
{
struct idmap_ad_context *ctx;
char *config_option;
- const char *range;
+ const char *range = NULL;
+ const char *schema_mode = NULL;
ADS_STRUCT *ads;
- /* verify AD is reachable (not critical, we may just be offline at start) */
- if ( (ads = ad_idmap_cached_connection()) == NULL ) {
- DEBUG(1, ("WARNING: Could not init an AD connection! Mapping might not work.\n"));
- }
-
if ( (ctx = talloc_zero(dom, struct idmap_ad_context)) == NULL ) {
DEBUG(0, ("Out of memory!\n"));
return NT_STATUS_NO_MEMORY;
@@ -194,6 +190,20 @@ static NTSTATUS idmap_ad_initialize(struct idmap_domain *dom, const char *params
}
}
+ /* schema mode */
+ if ( ad_map_type == WB_POSIX_MAP_UNKNOWN )
+ ad_map_type = WB_POSIX_MAP_RFC2307;
+ schema_mode = lp_parm_const_string(-1, config_option, "schema_mode", NULL);
+ if ( schema_mode && schema_mode[0] ) {
+ if ( strequal(schema_mode, "sfu") )
+ ad_map_type = WB_POSIX_MAP_SFU;
+ else if ( strequal(schema_mode, "rfc2307" ) )
+ ad_map_type = WB_POSIX_MAP_RFC2307;
+ else
+ DEBUG(0,("idmap_ad_initialize: Unknown schema_mode (%s)\n",
+ schema_mode));
+ }
+
dom->private_data = ctx;
talloc_free(config_option);