1
0
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:
Andrew Tridgell 1996-10-05 13:13:31 +00:00
parent f615329360
commit f3c79936d7
6 changed files with 35 additions and 20 deletions

View File

@ -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 */

View File

@ -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;

View File

@ -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
} }
} }

View File

@ -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));
} }

View File

@ -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);
} }

View File

@ -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;
/* /*