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)
"auth", /* DBGC_AUTH */
"winbind", /* DBGC_WINBIND */
"vfs", /* DBGC_VFS */
+ "idmap", /* DBGC_IDMAP */
NULL
};
{
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();
}
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;
}
}
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;
}
}
}
+ 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;
}
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();