diff options
author | Simo Sorce <idra@samba.org> | 2003-04-19 15:29:39 +0000 |
---|---|---|
committer | Simo Sorce <idra@samba.org> | 2003-04-19 15:29:39 +0000 |
commit | 84728c340001e4355f8c0cd668eb157090722c80 (patch) | |
tree | 20830a00a1cab00105c9d959c8e859400e983cb9 /source3 | |
parent | ee88b8214e8ac65a0e60aca244486db78c950ece (diff) | |
download | samba-84728c340001e4355f8c0cd668eb157090722c80.tar.gz samba-84728c340001e4355f8c0cd668eb157090722c80.tar.bz2 samba-84728c340001e4355f8c0cd668eb157090722c80.zip |
fixes
fix debug, add "idmap" string to the list of classes
fix idmap, check init failures, and enhance debugging
fix idmap_tdb, _do_ init uid and gid low,high states (too bad I missed that
before)
fix smbd/uid.c, use gid_t for gids and uid_t for uids
(This used to be commit bc95de4ebb014080bc70173e7df94c672cea8df6)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/lib/debug.c | 1 | ||||
-rw-r--r-- | source3/sam/idmap.c | 9 | ||||
-rw-r--r-- | source3/sam/idmap_tdb.c | 14 | ||||
-rw-r--r-- | source3/smbd/uid.c | 2 |
4 files changed, 21 insertions, 5 deletions
diff --git a/source3/lib/debug.c b/source3/lib/debug.c index dc675037a0..fdbd54fafb 100644 --- a/source3/lib/debug.c +++ b/source3/lib/debug.c @@ -154,6 +154,7 @@ static const char *default_classname_table[] = { "auth", /* DBGC_AUTH */ "winbind", /* DBGC_WINBIND */ "vfs", /* DBGC_VFS */ + "idmap", /* DBGC_IDMAP */ NULL }; diff --git a/source3/sam/idmap.c b/source3/sam/idmap.c index 8b5e23de25..771f4169a2 100644 --- a/source3/sam/idmap.c +++ b/source3/sam/idmap.c @@ -67,15 +67,18 @@ BOOL idmap_init(const char *remote_backend) { if (!local_map) { idmap_reg_tdb(&local_map); - local_map->init(); + if (NT_STATUS_IS_ERR(local_map->init())) { + DEBUG(0, ("idmap_init: could not load or create local backend!\n")); + return False; + } } if (!remote_map && remote_backend && *remote_backend != 0) { - DEBUG(3, ("load_methods: using '%s' as remote backend\n", remote_backend)); + DEBUG(3, ("idmap_init: using '%s' as remote backend\n", remote_backend)); remote_map = get_methods(remote_backend); if (!remote_map) { - DEBUG(0, ("load_methods: could not load remote backend '%s'\n", remote_backend)); + DEBUG(0, ("idmap_init: could not load remote backend '%s'\n", remote_backend)); return False; } remote_map->init(); diff --git a/source3/sam/idmap_tdb.c b/source3/sam/idmap_tdb.c index c494cf595f..a43f5824a1 100644 --- a/source3/sam/idmap_tdb.c +++ b/source3/sam/idmap_tdb.c @@ -60,7 +60,7 @@ static NTSTATUS db_allocate_id(unid_t *id, int id_type) } if (hwm > idmap_state.uid_high) { - DEBUG(0, ("idmap Fatal Error: UID range full!!\n")); + DEBUG(0, ("idmap Fatal Error: UID range full!! (max: %u)\n", idmap_state.uid_high)); return NT_STATUS_UNSUCCESSFUL; } @@ -75,7 +75,7 @@ static NTSTATUS db_allocate_id(unid_t *id, int id_type) } if (hwm > idmap_state.gid_high) { - DEBUG(0, ("idmap Fatal Error: GID range full!!\n")); + DEBUG(0, ("idmap Fatal Error: GID range full!! (max: %u)\n", idmap_state.gid_high)); return NT_STATUS_UNSUCCESSFUL; } @@ -284,6 +284,16 @@ static NTSTATUS db_idmap_init(void) } } + if (!lp_idmap_uid(&idmap_state.uid_low, &idmap_state.uid_high)) { + DEBUG(0, ("idmap uid range missing or invalid\n")); + DEBUGADD(0, ("idmap will be unable to map foreign SIDs\n")); + } + + if (!lp_idmap_gid(&idmap_state.gid_low, &idmap_state.gid_high)) { + DEBUG(0, ("idmap gid range missing or invalid\n")); + DEBUGADD(0, ("idmap will be unable to map foreign SIDs\n")); + } + return NT_STATUS_OK; } diff --git a/source3/smbd/uid.c b/source3/smbd/uid.c index 0fa65f47ca..0b67b53c71 100644 --- a/source3/smbd/uid.c +++ b/source3/smbd/uid.c @@ -873,6 +873,8 @@ BOOL sid_to_uid(const DOM_SID *psid, uid_t *puid, enum SID_NAME_USE *sidtype) if (sid_compare_domain(get_global_sam_sid(), psid) == 0) { BOOL result; + + DEBUG(10,("sid_to_uid: sid is local [%s]\n", sid_string_static(get_global_sam_sid()))); become_root(); result = local_sid_to_uid(puid, psid, sidtype); unbecome_root(); |