diff options
author | Luke Leighton <lkcl@samba.org> | 1997-11-06 23:03:58 +0000 |
---|---|---|
committer | Luke Leighton <lkcl@samba.org> | 1997-11-06 23:03:58 +0000 |
commit | bd529d7a83c35be233baca09bc79aa911ad443ce (patch) | |
tree | f6187ae5506640e8658998bb5b8cde68f6ec5530 /source3/namelogon.c | |
parent | ec35f1c1cc363b84867fea49f6b2b5e3c0b9b889 (diff) | |
download | samba-bd529d7a83c35be233baca09bc79aa911ad443ce.tar.gz samba-bd529d7a83c35be233baca09bc79aa911ad443ce.tar.xz samba-bd529d7a83c35be233baca09bc79aa911ad443ce.zip |
following a cvs error, i am rewriting this monster-commit. with bad grace.
Modified Files:
---------------
Makefile:
adding extra files
ipc.c :
send_trans_reply() - alignment issue. this makes the alignment
the same as that in NT. this should be looked at by people who
understand the SMB stuff better than i.
api_fd_commands[] - added samr and wkssvc pipes.
loadparm.c :
lp_domain_controller() changed to mean "samba is a domain controller".
it's a "yes/no" parameter, now. no, it isn't used _anywhere_.
namedbwork.c nameelect.c :
if "domain controller = yes" then add SV_TYPE_DOMAIN_CTRL to the
host _and_ workgroup announcements. yes, you must do both: nt does.
namelogon.c :
important NETLOGON bug in SAMLOGON request parsing, which may be
the source of some people's problems with logging on to the Samba PDC.
password.c :
get_smbpwnam() renamed to get_smbpwd_entry().
pipes.c :
added samr and wkssvc pipes.
proto.h :
usual. can we actually _remove_ proto.h from the cvs tree, and
have it as one of the Makefile dependencies, or something?
reply.c :
get_smbpwnam() renamed to get_smbpwd_entry() - also changed response
error code when logging in from a WORKSTATION$ account. yes, paul
is right: we need to know when to return the right error code, and why.
server.c :
added call to reset_chain_pnum().
#ifdef NTDOMAIN added call to init_lsa_policy_hnd() #endif. jeremy,
you'd be proud: i did a compile without NTDOMAIN, and caught a link
error for this function.
smb.h :
defines and structures for samr and wkssvc pipes.
smbpass.c :
modified get_smbpwnam() to get_smbpwd_entry() and it now takes
two arguments. one for the name; if this is null, it looks up
by smb_userid instead.
oh, by the way, smb_userids are actually domain relative ids
(RIDs). concatenate a RID with the domain SID, and you have
an internet globally unique way of identifying a user.
we're using RIDs in the wrong way....
added mod_smbpwnam() function. this was based on code in smbpasswd.c
rpc_pipes/lsaparse.c :
added enum trusted domain parsing. this is incomplete: i need
a packet trace to write it properly.
rpc_pipes/pipe_hnd.c :
added reset_chain_pnum() function.
rpc_pipes/pipenetlog.c :
get_smbpwnam() function renamed to get_smbpwd_entry().
arcfour() issues.
removed capability of get_md4pw() function to automatically add
workstation accounts. this should either be done using
smbpasswd -add MACHINE$, or by using \PIPE\samr.
rpc_pipes/pipe_util.c :
create_pol_hnd() - creates a unique LSA Policy Handle. overkill
function: uses a 64 bit sequence number; current unix time and
the smbd pid.
rpc_pipes/smbparse.c :
arcfour() issues.
smb_io_unistr2() should advance by uni_str_len not uni_max_len.
smb_io_smb_hdr_rb() - request bind uses uint16 for the context
id, and uint8 for the num_syntaxes. oops, i put these both as
uint32s.
Added Files:
------------
rpc_pipes/lsa_hnd.c :
on the samr pipe, allocate and associate an LSA Policy Handle
with a SID. you receive queries with the LSA Policy Handle,
and have to turn this back into a SID in order to answer the
query...
rpc_pipes/pipesamr.c rpc_pipes/samrparse.c
\PIPE\samr processing. samr i presume is the SAM Replication pipe.
rpc_pipes/pipewkssvc.c rpc_pipes/wksparse.c
\PIPE\wkssvc processing. the Workstation Service pipe?
holy cow.
(This used to be commit 1bd084b3e690eb26a1006d616075e53d711ecd2f)
Diffstat (limited to 'source3/namelogon.c')
-rw-r--r-- | source3/namelogon.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/source3/namelogon.c b/source3/namelogon.c index d8e0fcfc76..697a11a16a 100644 --- a/source3/namelogon.c +++ b/source3/namelogon.c @@ -118,12 +118,13 @@ void process_logon_packet(struct packet_struct *p,char *buf,int len) { char *q = buf + 2; char *machine = q; + mailslot = skip_string(machine,1); unicomp = skip_string(mailslot,1); - q = align2(q, buf); + q = align2(unicomp, buf); - q = skip_unicode_string(unicomp,1); + q = skip_unicode_string(q, 1); ntversion = IVAL(q, 0); q += 4; lmnttoken = SVAL(q, 0); q += 2; @@ -176,17 +177,21 @@ void process_logon_packet(struct packet_struct *p,char *buf,int len) ntversion = IVAL(q, 0); q += 4; lmnttoken = SVAL(q, 0); q += 2; lm20token = SVAL(q, 0); q += 2; + DEBUG(3,("SAMLOGON sidsize %d ntv %d\n", domainsidsize, ntversion)); /* If MACHINE$ is in our password database then respond, else ignore. Let's ignore the SID. */ - strcpy(ascuser,unistr(uniuser)); + + strcpy(ascuser, unistr(uniuser)); DEBUG(3,("SAMLOGON user %s\n", ascuser)); + strcpy(reply_name,"\\\\"); /* Here it wants \\LOGONSERVER */ - strcpy(reply_name+2,my_name); /* PAXX: Assuming we are logon svr */ - smb_pass = get_smbpwnam(ascuser); + strcpy(reply_name+2,my_name); + + smb_pass = get_smbpwd_entry(ascuser, 0); if(!smb_pass) { |