mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
Allow smbpasswd to join a W2K hosted AD domain.
Jeremy.
(This used to be commit c51cfc7f0d
)
This commit is contained in:
parent
ad4144d81d
commit
65bf96ed06
@ -217,6 +217,7 @@ typedef struct sam_user_info_23
|
|||||||
typedef struct sam_user_info_24
|
typedef struct sam_user_info_24
|
||||||
{
|
{
|
||||||
uint8 pass[516];
|
uint8 pass[516];
|
||||||
|
uint16 pw_len;
|
||||||
} SAM_USER_INFO_24;
|
} SAM_USER_INFO_24;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5187,10 +5187,11 @@ static BOOL sam_io_user_info11(char *desc, SAM_USER_INFO_11 * usr,
|
|||||||
|
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
void init_sam_user_info24(SAM_USER_INFO_24 * usr, char newpass[516])
|
void init_sam_user_info24(SAM_USER_INFO_24 * usr, char newpass[516], uint16 pw_len)
|
||||||
{
|
{
|
||||||
DEBUG(10, ("init_sam_user_info24:\n"));
|
DEBUG(10, ("init_sam_user_info24:\n"));
|
||||||
memcpy(usr->pass, newpass, sizeof(usr->pass));
|
memcpy(usr->pass, newpass, sizeof(usr->pass));
|
||||||
|
usr->pw_len = pw_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************
|
/*******************************************************************
|
||||||
@ -6474,6 +6475,10 @@ BOOL samr_io_q_connect(char *desc, SAMR_Q_CONNECT * q_u,
|
|||||||
if(!smb_io_unistr2("", &q_u->uni_srv_name, q_u->ptr_srv_name, ps, depth))
|
if(!smb_io_unistr2("", &q_u->uni_srv_name, q_u->ptr_srv_name, ps, depth))
|
||||||
return False;
|
return False;
|
||||||
|
|
||||||
|
if (MARSHALLING(ps) && (usr->pw_len != 0)) {
|
||||||
|
if (!prs_uint16("pw_len", ps, depth, &usr->pw_len))
|
||||||
|
return False;
|
||||||
|
}
|
||||||
if(!prs_align(ps))
|
if(!prs_align(ps))
|
||||||
return False;
|
return False;
|
||||||
if(!prs_uint32("access_mask", ps, depth, &q_u->access_mask))
|
if(!prs_uint32("access_mask", ps, depth, &q_u->access_mask))
|
||||||
|
@ -290,7 +290,12 @@ static int join_domain_byuser(char *domain, char *remote_machine,
|
|||||||
acct_name, ACB_WSTRUST,
|
acct_name, ACB_WSTRUST,
|
||||||
unknown, &user_pol,
|
unknown, &user_pol,
|
||||||
&user_rid);
|
&user_rid);
|
||||||
}
|
|
||||||
|
/* We *must* do this.... don't ask... */
|
||||||
|
|
||||||
|
CHECK_RPC_ERR_DEBUG(cli_samr_close(&cli, mem_ctx, &user_pol), ("error closing user policy"));
|
||||||
|
result = NT_STATUS_USER_EXISTS;
|
||||||
|
}
|
||||||
|
|
||||||
if (result == NT_STATUS_USER_EXISTS) {
|
if (result == NT_STATUS_USER_EXISTS) {
|
||||||
uint32 num_rids, *name_types, *user_rids;
|
uint32 num_rids, *name_types, *user_rids;
|
||||||
@ -356,7 +361,7 @@ static int join_domain_byuser(char *domain, char *remote_machine,
|
|||||||
ZERO_STRUCT(ctr);
|
ZERO_STRUCT(ctr);
|
||||||
ZERO_STRUCT(p24);
|
ZERO_STRUCT(p24);
|
||||||
|
|
||||||
init_sam_user_info24(&p24, pwbuf);
|
init_sam_user_info24(&p24, pwbuf,24);
|
||||||
|
|
||||||
ctr.switch_value = 24;
|
ctr.switch_value = 24;
|
||||||
ctr.info.id24 = &p24;
|
ctr.info.id24 = &p24;
|
||||||
@ -380,6 +385,7 @@ static int join_domain_byuser(char *domain, char *remote_machine,
|
|||||||
seems to cope with either value so don't bomb out if the set
|
seems to cope with either value so don't bomb out if the set
|
||||||
userinfo2 level 0x10 fails. -tpot */
|
userinfo2 level 0x10 fails. -tpot */
|
||||||
|
|
||||||
|
ZERO_STRUCT(ctr);
|
||||||
ctr.switch_value = 0x10;
|
ctr.switch_value = 0x10;
|
||||||
ctr.info.id10 = &p10;
|
ctr.info.id10 = &p10;
|
||||||
|
|
||||||
@ -549,7 +555,7 @@ static int process_root(int argc, char *argv[])
|
|||||||
char *old_passwd = NULL;
|
char *old_passwd = NULL;
|
||||||
char *remote_machine = NULL;
|
char *remote_machine = NULL;
|
||||||
|
|
||||||
while ((ch = getopt(argc, argv, "ax:d:e:mnj:r:sR:D:U:L")) != EOF) {
|
while ((ch = getopt(argc, argv, "ax:d:e:hmnj:r:sR:D:U:L")) != EOF) {
|
||||||
switch(ch) {
|
switch(ch) {
|
||||||
case 'L':
|
case 'L':
|
||||||
local_mode = True;
|
local_mode = True;
|
||||||
@ -613,6 +619,7 @@ static int process_root(int argc, char *argv[])
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 'h':
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user