diff options
-rw-r--r-- | source3/nmbd/nmbd_elections.c | 3 | ||||
-rw-r--r-- | source3/nmbd/nmbd_namelistdb.c | 4 | ||||
-rw-r--r-- | source3/nmbd/nmbd_subnetdb.c | 19 | ||||
-rw-r--r-- | source3/rpc_server/srv_netlog.c | 7 |
4 files changed, 26 insertions, 7 deletions
diff --git a/source3/nmbd/nmbd_elections.c b/source3/nmbd/nmbd_elections.c index ceef961d5e..5c85191ec2 100644 --- a/source3/nmbd/nmbd_elections.c +++ b/source3/nmbd/nmbd_elections.c @@ -378,9 +378,6 @@ yet registered on subnet %s\n", namestr(&nmbname), subrec->subnet_name )); work->ElectionCount = 0; work->RunningElection = True; work->needelection = False; - - /* Send a force election packet to begin. */ - send_election_dgram(subrec, work->work_group, 0, 0, ""); } } } diff --git a/source3/nmbd/nmbd_namelistdb.c b/source3/nmbd/nmbd_namelistdb.c index b7f185deeb..29d822550c 100644 --- a/source3/nmbd/nmbd_namelistdb.c +++ b/source3/nmbd/nmbd_namelistdb.c @@ -288,7 +288,9 @@ void standard_success_register(struct subnet_record *subrec, /******************************************************************* Utility function automatically called when a name refresh or register - fails. + fails. Note that this is only ever called on a broadcast subnet with + one IP address per name. This is why it can just delete the name + without enumerating the IP adresses. JRA. ******************************************************************/ void standard_fail_register( struct subnet_record *subrec, diff --git a/source3/nmbd/nmbd_subnetdb.c b/source3/nmbd/nmbd_subnetdb.c index 40ae1db1b3..36a3ee9a27 100644 --- a/source3/nmbd/nmbd_subnetdb.c +++ b/source3/nmbd/nmbd_subnetdb.c @@ -74,6 +74,7 @@ static void add_subnet(struct subnet_record *subrec) } /* CRH!!! */ +#if 0 /* ************************************************************************** ** * This will go away when we move to a "real" database back-end. Note that we cannot use memcmp here as we have no control over how the struct nmb_name structures are packed in memory. JRA. @@ -97,6 +98,24 @@ int namelist_entry_compare( ubi_trItemPtr Item, ubi_trNodePtr Node ) return nmbname->name_type - NR->name.name_type; } /* namelist_entry_compare */ +#else +/* ************************************************************************** ** + * This will go away when we move to a "real" database back-end. + * ************************************************************************** ** + */ +int namelist_entry_compare( ubi_trItemPtr Item, ubi_trNodePtr Node ) + { + struct name_record *NR = (struct name_record *)Node; + + struct nmb_name *Iname = (struct nmb_name *)Item; + DEBUG(10, ("namelist_entry_compare: %d == memcmp( \"%s\", \"%s\", %d )\n", + memcmp( Item, &(NR->name), sizeof(struct nmb_name) ), + namestr(Iname), namestr(&NR->name), sizeof(struct nmb_name)) ); + + return( memcmp( Item, &(NR->name), sizeof(struct nmb_name) ) ); + } /* namelist_entry_compare */ + +#endif /* CRH!!! */ /**************************************************************************** diff --git a/source3/rpc_server/srv_netlog.c b/source3/rpc_server/srv_netlog.c index 8bcf1682bc..cb22cfddf0 100644 --- a/source3/rpc_server/srv_netlog.c +++ b/source3/rpc_server/srv_netlog.c @@ -252,7 +252,8 @@ static BOOL get_md4pw(char *md4pw, char *mach_name, char *mach_acct) smb_pass = getsmbpwnam(mach_acct); unbecome_root(True); - if (smb_pass != NULL) + if ((smb_pass) != NULL && !(smb_pass->acct_ctrl & ACB_DISABLED) && + (smb_pass->smb_nt_passwd != NULL)) { memcpy(md4pw, smb_pass->smb_nt_passwd, 16); dump_data(5, md4pw, 16); @@ -656,9 +657,9 @@ static void api_net_sam_logon( int uid, unbecome_root(True); if (smb_pass == NULL) - { status = 0xC0000000 | NT_STATUS_NO_SUCH_USER; - } + else if (smb_pass->acct_ctrl & ACB_DISABLED) + status = 0xC0000000 | NT_STATUS_ACCOUNT_DISABLED; } /* validate password. */ |