mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
- replace the base36 function with one that works on more systems
(compiler bugs were the problem)
- minor password cleanups (catch WfWG bug where it sets the password
to a space instead of a NULL)
- fix printing problem for kanji users
- minor cleanups
(This used to be commit 92566ecc31
)
This commit is contained in:
parent
f615329360
commit
f3c79936d7
@ -239,7 +239,7 @@ static int string_match(char *tok,char *s)
|
|||||||
|
|
||||||
if (netgroup_ok) return(YES);
|
if (netgroup_ok) return(YES);
|
||||||
#else
|
#else
|
||||||
DEBUG(0,("access: netgroup support is not configured"));
|
DEBUG(0,("access: netgroup support is not configured\n"));
|
||||||
return (NO);
|
return (NO);
|
||||||
#endif
|
#endif
|
||||||
} else if (strcasecmp(tok, "ALL") == 0) { /* all: match any */
|
} else if (strcasecmp(tok, "ALL") == 0) { /* all: match any */
|
||||||
|
@ -513,12 +513,12 @@ void expire_names(time_t t)
|
|||||||
reply to a name query
|
reply to a name query
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
struct name_record *search_for_name(struct subnet_record **d,
|
struct name_record *search_for_name(struct subnet_record **d,
|
||||||
struct nmb_name *question,
|
struct nmb_name *question,
|
||||||
struct in_addr ip, int Time, int search)
|
struct in_addr ip, int Time, int search)
|
||||||
{
|
{
|
||||||
int name_type = question->name_type;
|
int name_type = question->name_type;
|
||||||
char *qname = question->name;
|
char *qname = question->name;
|
||||||
BOOL dns_type = name_type == 0x20 || name_type == 0;
|
BOOL dns_type = (name_type == 0x20 || name_type == 0);
|
||||||
|
|
||||||
struct name_record *n;
|
struct name_record *n;
|
||||||
|
|
||||||
|
@ -333,7 +333,7 @@ static void process_rcv_backup_list(struct packet_struct *p,char *buf)
|
|||||||
for (buf1 = buf+5; *buf1 && count; buf1 = skip_string(buf1, 1), --count)
|
for (buf1 = buf+5; *buf1 && count; buf1 = skip_string(buf1, 1), --count)
|
||||||
{
|
{
|
||||||
struct in_addr back_ip;
|
struct in_addr back_ip;
|
||||||
struct subnet_record *d;
|
/* struct subnet_record *d; */
|
||||||
|
|
||||||
DEBUG(4,("Searching for backup browser %s at %s...\n",
|
DEBUG(4,("Searching for backup browser %s at %s...\n",
|
||||||
buf1, inet_ntoa(ip)));
|
buf1, inet_ntoa(ip)));
|
||||||
@ -352,8 +352,9 @@ static void process_rcv_backup_list(struct packet_struct *p,char *buf)
|
|||||||
DEBUG(4,("Found browser server at %s\n", inet_ntoa(back_ip)));
|
DEBUG(4,("Found browser server at %s\n", inet_ntoa(back_ip)));
|
||||||
DEBUG(4,("END THIS LOOP: CODE NEEDS UPDATING\n"));
|
DEBUG(4,("END THIS LOOP: CODE NEEDS UPDATING\n"));
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* XXXX function needs work */
|
/* XXXX function needs work */
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ((d = find_subnet(back_ip)))
|
if ((d = find_subnet(back_ip)))
|
||||||
{
|
{
|
||||||
@ -374,6 +375,7 @@ static void process_rcv_backup_list(struct packet_struct *p,char *buf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -383,13 +383,10 @@ BOOL is_mangled(char *s)
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
return a base 36 character. v must be from 0 to 35.
|
return a base 36 character. v must be from 0 to 35.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
static char base36(int v)
|
static char base36(unsigned int v)
|
||||||
{
|
{
|
||||||
v = v % 36;
|
static char basechars[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
if (v < 10)
|
return basechars[v % 36];
|
||||||
return('0'+v);
|
|
||||||
else /* needed to work around a DEC C compiler bug */
|
|
||||||
return('A' + (v-10));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ int reply_tcon(char *inbuf,char *outbuf)
|
|||||||
int outsize = 0;
|
int outsize = 0;
|
||||||
int uid = SVAL(inbuf,smb_uid);
|
int uid = SVAL(inbuf,smb_uid);
|
||||||
int vuid;
|
int vuid;
|
||||||
int pwlen;
|
int pwlen=0;
|
||||||
|
|
||||||
*service = *user = *password = *dev = 0;
|
*service = *user = *password = *dev = 0;
|
||||||
|
|
||||||
@ -218,6 +218,7 @@ int reply_tcon_and_X(char *inbuf,char *outbuf,int length,int bufsize)
|
|||||||
int uid = SVAL(inbuf,smb_uid);
|
int uid = SVAL(inbuf,smb_uid);
|
||||||
int vuid;
|
int vuid;
|
||||||
int passlen = SVAL(inbuf,smb_vwv3);
|
int passlen = SVAL(inbuf,smb_vwv3);
|
||||||
|
BOOL doencrypt = SMBENCRYPT();
|
||||||
|
|
||||||
*service = *user = *password = *devicename = 0;
|
*service = *user = *password = *devicename = 0;
|
||||||
|
|
||||||
@ -231,8 +232,15 @@ int reply_tcon_and_X(char *inbuf,char *outbuf,int length,int bufsize)
|
|||||||
char *path;
|
char *path;
|
||||||
char *p;
|
char *p;
|
||||||
memcpy(password,smb_buf(inbuf),passlen);
|
memcpy(password,smb_buf(inbuf),passlen);
|
||||||
password[passlen]=0;
|
password[passlen]=0;
|
||||||
path = smb_buf(inbuf) + passlen;
|
path = smb_buf(inbuf) + passlen;
|
||||||
|
|
||||||
|
if (!doencrypt || passlen != 24) {
|
||||||
|
if (strequal(password," "))
|
||||||
|
*password = 0;
|
||||||
|
passlen = strlen(password);
|
||||||
|
}
|
||||||
|
|
||||||
DEBUG(4,("parsing net-path %s, passlen=%d\n",path,passlen));
|
DEBUG(4,("parsing net-path %s, passlen=%d\n",path,passlen));
|
||||||
strcpy(service,path+2);
|
strcpy(service,path+2);
|
||||||
p = strchr(service,'\\');
|
p = strchr(service,'\\');
|
||||||
@ -315,7 +323,7 @@ int reply_sesssetup_and_X(char *inbuf,char *outbuf,int length,int bufsize)
|
|||||||
int smb_mpxmax;
|
int smb_mpxmax;
|
||||||
int smb_vc_num;
|
int smb_vc_num;
|
||||||
uint32 smb_sesskey;
|
uint32 smb_sesskey;
|
||||||
int smb_apasslen;
|
int smb_apasslen = 0;
|
||||||
pstring smb_apasswd;
|
pstring smb_apasswd;
|
||||||
int smb_ntpasslen = 0;
|
int smb_ntpasslen = 0;
|
||||||
pstring smb_ntpasswd;
|
pstring smb_ntpasswd;
|
||||||
@ -343,6 +351,9 @@ int reply_sesssetup_and_X(char *inbuf,char *outbuf,int length,int bufsize)
|
|||||||
BOOL doencrypt = SMBENCRYPT();
|
BOOL doencrypt = SMBENCRYPT();
|
||||||
char *p = smb_buf(inbuf);
|
char *p = smb_buf(inbuf);
|
||||||
|
|
||||||
|
if (passlen1 != 24 && passlen2 != 24)
|
||||||
|
doencrypt = False;
|
||||||
|
|
||||||
if(doencrypt) {
|
if(doencrypt) {
|
||||||
/* Save the lanman2 password and the NT md4 password. */
|
/* Save the lanman2 password and the NT md4 password. */
|
||||||
smb_apasslen = passlen1;
|
smb_apasslen = passlen1;
|
||||||
@ -366,17 +377,22 @@ int reply_sesssetup_and_X(char *inbuf,char *outbuf,int length,int bufsize)
|
|||||||
}
|
}
|
||||||
/* we use the first password that they gave */
|
/* we use the first password that they gave */
|
||||||
smb_apasslen = passlen1;
|
smb_apasslen = passlen1;
|
||||||
StrnCpy(smb_apasswd,p,smb_apasslen);
|
StrnCpy(smb_apasswd,p,smb_apasslen);
|
||||||
|
|
||||||
|
/* trim the password */
|
||||||
|
smb_apasslen = strlen(smb_apasswd);
|
||||||
|
|
||||||
|
/* wfwg sometimes uses a space instead of a null */
|
||||||
|
if (strequal(smb_apasswd," ")) {
|
||||||
|
smb_apasslen = 0;
|
||||||
|
*smb_apasswd = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
p += passlen1 + passlen2;
|
p += passlen1 + passlen2;
|
||||||
strcpy(user,p); p = skip_string(p,1);
|
strcpy(user,p); p = skip_string(p,1);
|
||||||
DEBUG(3,("Domain=[%s] NativeOS=[%s] NativeLanMan=[%s]\n",
|
DEBUG(3,("Domain=[%s] NativeOS=[%s] NativeLanMan=[%s]\n",
|
||||||
p,skip_string(p,1),skip_string(p,2)));
|
p,skip_string(p,1),skip_string(p,2)));
|
||||||
|
|
||||||
/* now work around the Win95 bug */
|
|
||||||
if(!doencrypt && smb_apasslen==24)
|
|
||||||
smb_apasslen = strlen(smb_apasswd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -841,7 +841,7 @@ void open_file(int fnum,int cnum,char *fname1,int flags,int mode)
|
|||||||
Files[fnum].print_file = Connections[cnum].printer;
|
Files[fnum].print_file = Connections[cnum].printer;
|
||||||
Files[fnum].modified = False;
|
Files[fnum].modified = False;
|
||||||
Files[fnum].cnum = cnum;
|
Files[fnum].cnum = cnum;
|
||||||
string_set(&Files[fnum].name,fname);
|
string_set(&Files[fnum].name,dos_to_unix(fname,False));
|
||||||
Files[fnum].wbmpx_ptr = NULL;
|
Files[fnum].wbmpx_ptr = NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user