DEBUG(5, ("Mapping user [%s]\\[%s] from workstation [%s]\n",
client_domain, smb_name, wksta_name));
- /* don't allow "" as a domain, fixes a Win9X bug
- where it doens't supply a domain for logon script
- 'net use' commands. */
-
- if ( *client_domain )
- domain = client_domain;
- else
- domain = lp_workgroup();
+ domain = client_domain;
/* If you connect to a Windows domain member using a bogus domain name,
* the Windows box will map the BOGUS\user to SAMNAME\user. Thus, if
* the Windows box is a DC the name will become DOMAIN\user and be
* authenticated against AD, if the Windows box is a member server but
* not a DC the name will become WORKSTATION\user. A standalone
- * non-domain member box will also map to WORKSTATION\user. */
+ * non-domain member box will also map to WORKSTATION\user.
+ * This also deals with the client passing in a "" domain */
if (!is_trusted_domain(domain) &&
- !strequal(domain, get_global_sam_name()) )
+ !strequal(domain, my_sam_name()))
{
if (lp_map_untrusted_to_domain())
domain = my_sam_name();
unsigned char local_nt_response[24];
unsigned char key[16];
- ZERO_STRUCT(key);
- memcpy(key, dc_sess_key, 8);
+ memcpy(key, dc_sess_key, 16);
if (lm_interactive_pwd)
memcpy(lm_pwd, lm_interactive_pwd, sizeof(lm_pwd));
if (!uid_to_unix_users_sid(server_info->utok.uid, &tmp_sid)) {
DEBUG(1,("create_local_token: Failed to create SID "
- "for uid %d!\n", server_info->utok.uid));
+ "for uid %u!\n", (unsigned int)server_info->utok.uid));
}
add_sid_to_array_unique(server_info->ptok, &tmp_sid,
&server_info->ptok->user_sids,
for ( i=0; i<server_info->utok.ngroups; i++ ) {
if (!gid_to_unix_groups_sid( server_info->utok.groups[i], &tmp_sid ) ) {
DEBUG(1,("create_local_token: Failed to create SID "
- "for gid %d!\n", server_info->utok.groups[i]));
+ "for gid %u!\n", (unsigned int)server_info->utok.groups[i]));
continue;
}
add_sid_to_array_unique(server_info->ptok, &tmp_sid,
pass = getpwuid_alloc(tmp_ctx, *uid);
if (pass == NULL) {
- DEBUG(1, ("getpwuid(%d) for user %s failed\n",
- *uid, username));
+ DEBUG(1, ("getpwuid(%u) for user %s failed\n",
+ (unsigned int)*uid, username));
goto done;
}
if ( !gid_to_unix_groups_sid( gids[i], &unix_group_sid ) ) {
DEBUG(1,("create_token_from_username: Failed to create SID "
- "for gid %d!\n", gids[i]));
+ "for gid %u!\n", (unsigned int)gids[i]));
continue;
}
result = add_sid_to_array_unique(tmp_ctx, &unix_group_sid,
if (!pdb_set_pass_last_set_time(
sam_account,
- nt_time_to_unix(info->pass_last_set_time),
+ info->pass_last_set_time,
PDB_CHANGED)) {
TALLOC_FREE(result);
return NT_STATUS_NO_MEMORY;
if (!pdb_set_pass_can_change_time(
sam_account,
- nt_time_to_unix(info->pass_can_change_time),
+ info->pass_can_change_time,
PDB_CHANGED)) {
TALLOC_FREE(result);
return NT_STATUS_NO_MEMORY;
if (!pdb_set_pass_must_change_time(
sam_account,
- nt_time_to_unix(info->pass_must_change_time),
+ info->pass_must_change_time,
PDB_CHANGED)) {
TALLOC_FREE(result);
return NT_STATUS_NO_MEMORY;
if ( lp_server_role() == ROLE_STANDALONE )
return False;
+ if (dom_name == NULL || dom_name[0] == '\0') {
+ return false;
+ }
+
+ if (strequal(dom_name, get_global_sam_name())) {
+ return false;
+ }
+
/* if we are a DC, then check for a direct trust relationships */
if ( IS_DC ) {