*************************************************************************/
-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"));
memcpy(usr->pass, newpass, sizeof(usr->pass));
+ usr->pw_len = pw_len;
}
/*******************************************************************
if(!smb_io_unistr2("", &q_u->uni_srv_name, q_u->ptr_srv_name, ps, depth))
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))
return False;
if(!prs_uint32("access_mask", ps, depth, &q_u->access_mask))
acct_name, ACB_WSTRUST,
unknown, &user_pol,
&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) {
uint32 num_rids, *name_types, *user_rids;
ZERO_STRUCT(ctr);
ZERO_STRUCT(p24);
- init_sam_user_info24(&p24, pwbuf);
+ init_sam_user_info24(&p24, pwbuf,24);
ctr.switch_value = 24;
ctr.info.id24 = &p24;
seems to cope with either value so don't bomb out if the set
userinfo2 level 0x10 fails. -tpot */
+ ZERO_STRUCT(ctr);
ctr.switch_value = 0x10;
ctr.info.id10 = &p10;
char *old_passwd = 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) {
case 'L':
local_mode = True;
break;
}
+ case 'h':
default:
usage();
}