1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-27 03:21:53 +03:00

oops. pressed ctrl-z while editing the previous cvs message: this was

taken to mean ":x".
(This used to be commit 660206e816)
This commit is contained in:
Luke Leighton 1998-05-18 11:59:19 +00:00
parent 32954eb9e9
commit a85b42ff37

View File

@ -29,14 +29,110 @@ extern int DEBUGLEVEL;
static int gotalarm;
/***************************************************************
Signal function to tell us we timed out.
the fields for the NIS+ table, generated from mknissmbpwtbl.sh, are:
name=S,nogw=r
uid=S,nogw=r
user_rid=S,nogw=r
smb_grpid=,nw+r
group_rid=,nw+r
acb=,nw+r
lmpwd=C,nw=,g=r,o=rm
ntpwd=C,nw=,g=r,o=rm
logon_t=,nw+r
logoff_t=,nw+r
kick_t=,nw+r
pwdlset_t=,nw+r
pwdlchg_t=,nw+r
pwdmchg_t=,nw+r
full_name=,nw+r
home_dir=,nw+r
dir_drive=,nw+r
logon_script=,nw+r
profile_path=,nw+r
acct_desc=,nw+r
workstations=,nw+r
hours=,nw+r
****************************************************************/
#define NPF_NAME 0
#define NPF_UID 1
#define NPF_USER_RID 2
#define NPF_SMB_GRPID 3
#define NPF_GROUP_RID 4
#define NPF_ACB 5
#define NPF_LMPWD 6
#define NPF_NTPWD 7
#define NPF_LOGON_T 8
#define NPF_LOGOFF_T 9
#define NPF_PWDLSET_T 10
#define NPF_PWDLCHG_T 11
#define NPF_PWDMCHG_T 12
#define NPF_FULL_NAME 13
#define NPF_HOME_DIR 14
#define NPF_DIR_DRIVE 15
#define NPF_LOGON_SCRIPT 16
#define NPF_PROFILE_PATH 17
#define NPF_ACCT_DESC 18
#define NPF_WORKSTATIONS 19
#define NPF_HOURS 20
/***************************************************************
Signal function to tell us we timed out.
****************************************************************/
static void gotalarm_sig(void)
{
gotalarm = 1;
}
/***************************************************************
make_nisname_from_user_rid
****************************************************************/
static char *make_nisname_from_user_rid(uint32 rid)
{
static pstring nisname;
safe_strcpy(nisname, "[user_rid=", sizeof(nisname));
slprintf(nisname, sizeof(nisname), "%s%d", nisname, rid);
safe_strcat(nisname, "], passwd.org_dir", sizeof(nisname)-strlen(nisname)-1);
return nisname;
}
/***************************************************************
make_nisname_from_uid
****************************************************************/
static char *make_nisname_from_uid(int uid)
{
static pstring nisname;
safe_strcpy(nisname, "[uid=", sizeof(nisname));
slprintf(nisname, sizeof(nisname), "%s%d", nisname, uid);
safe_strcat(nisname, "], passwd.org_dir", sizeof(nisname)-strlen(nisname)-1);
return nisname;
}
/***************************************************************
make_nisname_from_name
****************************************************************/
static char *make_nisname_from_name(char *user_name)
{
static pstring nisname;
safe_strcpy(nisname, "[name=", sizeof(nisname));
safe_strcat(nisname, user_name, sizeof(nisname) - strlen(nisname) - 1);
safe_strcat(nisname, "], passwd.org_dir", sizeof(nisname) - strlen(nisname) - 1);
return nisname;
}
/***************************************************************
Start to enumerate the nisplus passwd list. Returns a void pointer
to ensure no modification outside this module.
@ -130,7 +226,7 @@ BOOL add_nisppwd_entry(struct smb_passwd *newpwd)
BOOL add_user = True;
char *pfile;
pstring nisname;
char *nisname;
nis_result *nis_user;
nis_result *result = NULL,
*tblresult = NULL,
@ -142,13 +238,7 @@ BOOL add_nisppwd_entry(struct smb_passwd *newpwd)
safe_strcpy(user_name, newpwd->smb_name, sizeof(user_name));
safe_strcpy(nisname, "[name=", sizeof(nisname));
safe_strcat(nisname, user_name, sizeof(nisname) - strlen(nisname) -1);
safe_strcat(nisname, "],passwd.org_dir", sizeof(nisname)-strlen(nisname)-1);
safe_strcpy(nisname, "[uid=", sizeof(nisname));
slprintf(nisname, sizeof(nisname), "%s%d", nisname, newpwd->smb_userid);
safe_strcat(nisname, "],passwd.org_dir", sizeof(nisname)-strlen(nisname)-1);
nisname = make_nisname_from_name(user_name);
nis_user = nis_list(nisname, FOLLOW_PATH | EXPAND_NAME | HARD_LOOKUP, NULL, NULL);
@ -159,10 +249,6 @@ BOOL add_nisppwd_entry(struct smb_passwd *newpwd)
return False;
}
/*
* Calculate the SMB (lanman) hash functions of both old and new passwords.
*/
user_obj = NIS_RES_OBJECT(nis_user);
safe_strcpy(nisname, "[name=", sizeof(nisname));
@ -343,23 +429,23 @@ static BOOL make_smb_from_nisp(struct smb_passwd *pw_buf, nis_result *result)
obj = &NIS_RES_OBJECT(result)[0];
/* Check the lanman password column. */
p = (uchar *)ENTRY_VAL(obj, 2);
if (strlen((char *)p) != 32 || !pdb_gethexpwd((char *)p, (char *)smbpwd))
p = (uchar *)ENTRY_VAL(obj, NPF_LMPWD);
if (strlen((char *)p) != 32 || !gethexpwd((char *)p, (char *)smbpwd))
{
DEBUG(0, ("make_smb_from_nisp: malformed LM pwd entry.\n"));
return False;
}
/* Check the NT password column. */
p = (uchar *)ENTRY_VAL(obj, 3);
if (strlen((char *)p) != 32 || !pdb_gethexpwd((char *)p, (char *)smbntpwd))
p = (uchar *)ENTRY_VAL(obj, NPF_NTPWD);
if (strlen((char *)p) != 32 || !gethexpwd((char *)p, (char *)smbntpwd))
{
DEBUG(0, ("make_smb_from_nisp: malformed NT pwd entry\n"));
return False;
}
strncpy(user_name, ENTRY_VAL(obj, 0), sizeof(user_name));
uidval = atoi(ENTRY_VAL(obj, 1));
strncpy(user_name, ENTRY_VAL(obj, NPF_NAME), sizeof(user_name));
uidval = atoi(ENTRY_VAL(obj, NPF_UID));
pw_buf->smb_name = user_name;
pw_buf->smb_userid = uidval;