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

This commit does 3 main things:

1) put the encryption code in by default, with no #ifdef. It is still
disabled by default so you need to add "encrypt passwords = yes" in
smb.conf but at least all binaries will have it.

2) cleanup the kanji code so it compiles with no warnings

3) get rid of lots of uses of ugly non-portable C code. The main
offender being things like "register" but also remove uses of the
"const" keyword as there are compilers out there that don't support it
and even those that do often complain about its usage. Users don't
like warnings :-(

There is still some work to do. We need to replace the md4 code with
our own implementation. The current code (from rfc1186) is PD but is
not very portable. The new RFC (rfc1320) is more portable but adds
copyright restrictions. I'll do a from-scratch MD4 soon.

We also need to test that what I've implemented is portable. It should
be, but I'm too tired right now to test it on anything other than
intel linux.
This commit is contained in:
Andrew Tridgell 0001-01-01 00:00:00 +00:00
parent c2bc073a87
commit db917c62c1
20 changed files with 96 additions and 235 deletions

View File

@ -3303,15 +3303,11 @@ static BOOL send_login(char *inbuf,char *outbuf,BOOL start_session,BOOL use_setu
int passlen = strlen(pass)+1;
strcpy(pword,pass);
#ifdef SMB_PASSWD
if (doencrypt && *pass) {
DEBUG(3,("Using encrypted passwords\n"));
passlen = 24;
SMBencrypt((uchar *)pass,(uchar *)cryptkey,(uchar *)pword);
}
#else
doencrypt = False;
#endif
/* if in share level security then don't send a password now */
if (!(sec_mode & 1)) {strcpy(pword, "");passlen=1;}
@ -3422,12 +3418,10 @@ static BOOL send_login(char *inbuf,char *outbuf,BOOL start_session,BOOL use_setu
fstring pword;
strcpy(pword,pass);
#ifdef SMB_PASSWD
if (doencrypt && *pass) {
passlen=24;
SMBencrypt((uchar *)pass,(uchar *)cryptkey,(uchar *)pword);
}
#endif
/* if in user level security then don't send a password now */
if ((sec_mode & 1)) {

View File

@ -440,15 +440,11 @@ BOOL cli_send_login(char *inbuf, char *outbuf, BOOL start_session, BOOL use_setu
int passlen = strlen(pass)+1;
strcpy(pword,pass);
#ifdef SMB_PASSWD
if (doencrypt && *pass) {
DEBUG(5,("Using encrypted passwords\n"));
passlen = 24;
SMBencrypt((uchar *)pass,(uchar *)cryptkey,(uchar *)pword);
}
#else
doencrypt = False;
#endif
/* if in share level security then don't send a password now */
if (!(sec_mode & 1)) {strcpy(pword, "");passlen=1;}
@ -559,12 +555,10 @@ BOOL cli_send_login(char *inbuf, char *outbuf, BOOL start_session, BOOL use_setu
fstring pword;
strcpy(pword,pass);
#ifdef SMB_PASSWD
if (doencrypt && *pass) {
passlen=24;
SMBencrypt((uchar *)pass,(uchar *)cryptkey,(uchar *)pword);
}
#endif
/* if in user level security then don't send a password now */
if ((sec_mode & 1)) {

View File

@ -105,13 +105,8 @@
#else /* not _KANJI_C_ */
extern char* (*_dos_to_unix) (const char *str, BOOL overwrite);
extern char* (*_unix_to_dos) (const char *str, BOOL overwrite);
extern char *sj_strtok (char *s1, const char *s2);
extern char *sj_strchr (const char *s, int c);
extern char *sj_strrchr (const char *s, int c);
extern char *sj_strstr (const char *s1, const char *s2);
extern char *(*_dos_to_unix)(char *str, BOOL overwrite);
extern char *(*_unix_to_dos)(char *str, BOOL overwrite);
#define strchr sj_strchr
#define strrchr sj_strrchr

View File

@ -120,6 +120,10 @@ int reply_trans(char *inbuf,char *outbuf);
/*The following definitions come from kanji.c */
char *sj_strtok(char *s1, char *s2);
char *sj_strstr(char *s1, char *s2);
char *sj_strchr (char *s, int c);
char *sj_strrchr(char *s, int c);
int interpret_coding_system(char *str, int def);
/*The following definitions come from loadparm.c */
@ -309,14 +313,14 @@ BOOL set_share_mode(share_lock_token token,int fnum);
/*The following definitions come from make_smbcodepage.c */
void codepage_usage(const char *progname);
void codepage_usage(char *progname);
void read_line( char **buf, char *line_buf, int size);
int clean_data( char **buf, uint32 *size);
BOOL parse_byte(char *buf, unsigned char *bp);
BOOL parse_bool(char *buf, unsigned char *bp);
void parse_error(char *buf, char *msg);
int do_compile(int codepage, const char *input_file, const char *output_file);
int do_decompile( int codepage, const char *input_file, const char *output_file);
int do_compile(int codepage, char *input_file, char *output_file);
int do_decompile( int codepage, char *input_file, char *output_file);
int main(int argc, char **argv);
/*The following definitions come from mangle.c */
@ -565,6 +569,7 @@ BOOL reload_services(BOOL test);
/*The following definitions come from nmblib.c */
char *lookup_opcode_name( int opcode );
void debug_nmb_packet(struct packet_struct *p);
char *namestr(struct nmb_name *n);
void free_nmb_packet(struct nmb_packet *nmb);
@ -778,10 +783,12 @@ BOOL smb_shm_get_usage(int *bytes_free,
int *bytes_used,
int *bytes_overhead);
/*The following definitions come from smbdes.c */
void smbdes(unsigned char *out, unsigned char *in, unsigned char *key);
/*The following definitions come from smbencrypt.c */
void str_to_key(uchar *str,uchar *key);
void D1(uchar *k, uchar *d, uchar *out);
void E1(uchar *k, uchar *d, uchar *out);
void E_P16(uchar *p14,uchar *p16);
void E_P24(uchar *p21, uchar *c8, uchar *p24);
@ -801,6 +808,9 @@ struct smb_passwd *get_smbpwnam(char *name);
/*The following definitions come from smbrun.c */
/*The following definitions come from smbwizard.c */
/*The following definitions come from status.c */
void Ucrit_addUsername(pstring username);
@ -901,10 +911,10 @@ time_t file_modtime(char *fname);
BOOL directory_exist(char *dname,struct stat *st);
uint32 file_size(char *file_name);
char *attrib_string(int mode);
int StrCaseCmp(const char *s, const char *t);
int StrnCaseCmp(const char *s, const char *t, int n);
BOOL strequal(const char *s1, const char *s2);
BOOL strnequal(const char *s1,const char *s2,int n);
int StrCaseCmp(char *s, char *t);
int StrnCaseCmp(char *s, char *t, int n);
BOOL strequal(char *s1, char *s2);
BOOL strnequal(char *s1,char *s2,int n);
BOOL strcsequal(char *s1,char *s2);
void strlower(char *s);
void strupper(char *s);
@ -997,7 +1007,7 @@ void free_namearray(name_compare_entry *name_array);
BOOL fcntl_lock(int fd,int op,uint32 offset,uint32 count,int type);
int file_lock(char *name,int timeout);
void file_unlock(int fd);
BOOL is_myname(const char *s);
BOOL is_myname(char *s);
void set_remote_arch(enum remote_arch_types type);
enum remote_arch_types get_remote_arch();

View File

@ -526,11 +526,7 @@ struct connect_record
#define IS_HIDDEN_PATH(cnum,path) (is_in_path((path),Connections[(cnum)].hide_list))
#define IS_VETO_PATH(cnum,path) (is_in_path((path),Connections[(cnum)].veto_list))
#ifdef SMB_PASSWD
#define SMBENCRYPT() (lp_encrypted_passwords())
#else
#define SMBENCRYPT() (False)
#endif
/* the basic packet size, assuming no words or bytes */
#define smb_size 39

View File

@ -45,7 +45,7 @@ static struct termio t;
return ioctl(fd, TCGETA, t);
}
int tcsetattr(int fd, int flags, const struct termio *t)
int tcsetattr(int fd, int flags, struct termio *t)
{
if(flags & TCSAFLUSH)
ioctl(fd, TCFLSH, TCIOFLUSH);
@ -76,7 +76,7 @@ static struct sgttyb t;
return ioctl(fd, TIOCGETP, (char *)t);
}
int tcsetattr(int fd, int flags, const struct sgttyb *t)
int tcsetattr(int fd, int flags, struct sgttyb *t)
{
return ioctl(fd, TIOCSETP, (char *)t);
}

View File

@ -42,8 +42,7 @@ char hex_tag = HEXTAG;
search token from S1 separated any char of S2
S1 contain SHIFT JIS chars.
********************************************************************/
char *
sj_strtok (char *s1, const char *s2)
char *sj_strtok(char *s1, char *s2)
{
static char *s = NULL;
char *q;
@ -82,10 +81,9 @@ sj_strtok (char *s1, const char *s2)
search string S2 from S1
S1 contain SHIFT JIS chars.
********************************************************************/
char *
sj_strstr (const char *s1, const char *s2)
char *sj_strstr(char *s1, char *s2)
{
register int len = strlen ((char *) s2);
int len = strlen ((char *) s2);
if (!*s2)
return (char *) s1;
for (;*s1;) {
@ -106,8 +104,7 @@ sj_strstr (const char *s1, const char *s2)
Search char C from beginning of S.
S contain SHIFT JIS chars.
********************************************************************/
char *
sj_strchr (const char *s, int c)
char *sj_strchr (char *s, int c)
{
for (; *s; ) {
if (*s == c)
@ -125,10 +122,9 @@ sj_strchr (const char *s, int c)
Search char C end of S.
S contain SHIFT JIS chars.
********************************************************************/
char *
sj_strrchr (const char *s, int c)
char *sj_strrchr(char *s, int c)
{
register char *q;
char *q;
for (q = 0; *s; ) {
if (*s == c) {
@ -152,8 +148,7 @@ static char cvtbuf[1024];
/*******************************************************************
EUC <-> SJIS
********************************************************************/
static int
euc2sjis (register int hi, register int lo)
static int euc2sjis (int hi, int lo)
{
if (hi & 1)
return ((hi / 2 + (hi < 0xdf ? 0x31 : 0x71)) << 8) |
@ -162,8 +157,7 @@ euc2sjis (register int hi, register int lo)
return ((hi / 2 + (hi < 0xdf ? 0x30 : 0x70)) << 8) | (lo - 2);
}
static int
sjis2euc (register int hi, register int lo)
static int sjis2euc (int hi, int lo)
{
if (lo >= 0x9f)
return ((hi * 2 - (hi >= 0xe0 ? 0xe0 : 0x60)) << 8) | (lo + 2);
@ -176,10 +170,9 @@ sjis2euc (register int hi, register int lo)
Convert FROM contain SHIFT JIS codes to EUC codes
return converted buffer
********************************************************************/
static char *
sj_to_euc (const char *from, BOOL overwrite)
static char *sj_to_euc(char *from, BOOL overwrite)
{
register char *out;
char *out;
char *save;
save = (char *) from;
@ -209,10 +202,9 @@ sj_to_euc (const char *from, BOOL overwrite)
Convert FROM contain EUC codes to SHIFT JIS codes
return converted buffer
********************************************************************/
static char *
euc_to_sj (const char *from, BOOL overwrite)
static char *euc_to_sj(char *from, BOOL overwrite)
{
register char *out;
char *out;
char *save;
save = (char *) from;
@ -241,8 +233,7 @@ euc_to_sj (const char *from, BOOL overwrite)
/*******************************************************************
JIS7,JIS8,JUNET <-> SJIS
********************************************************************/
static int
sjis2jis (register int hi, register int lo)
static int sjis2jis(int hi, int lo)
{
if (lo >= 0x9f)
return ((hi * 2 - (hi >= 0xe0 ? 0x160 : 0xe0)) << 8) | (lo - 0x7e);
@ -251,8 +242,7 @@ sjis2jis (register int hi, register int lo)
(lo - (lo >= 0x7f ? 0x20 : 0x1f));
}
static int
jis2sjis (register int hi, register int lo)
static int jis2sjis(int hi, int lo)
{
if (hi & 1)
return ((hi / 2 + (hi < 0x5f ? 0x71 : 0xb1)) << 8) |
@ -265,11 +255,10 @@ jis2sjis (register int hi, register int lo)
Convert FROM contain JIS codes to SHIFT JIS codes
return converted buffer
********************************************************************/
static char *
jis8_to_sj (const char *from, BOOL overwrite)
static char *jis8_to_sj(char *from, BOOL overwrite)
{
register char *out;
register int shifted;
char *out;
int shifted;
char *save;
shifted = _KJ_ROMAN;
@ -316,11 +305,10 @@ jis8_to_sj (const char *from, BOOL overwrite)
Convert FROM contain SHIFT JIS codes to JIS codes
return converted buffer
********************************************************************/
static char *
sj_to_jis8 (const char *from, BOOL overwrite)
static char *sj_to_jis8(char *from, BOOL overwrite)
{
register char *out;
register int shifted;
char *out;
int shifted;
char *save;
shifted = _KJ_ROMAN;
@ -373,11 +361,10 @@ sj_to_jis8 (const char *from, BOOL overwrite)
Convert FROM contain 7 bits JIS codes to SHIFT JIS codes
return converted buffer
********************************************************************/
static char *
jis7_to_sj (const char *from, BOOL overwrite)
static char *jis7_to_sj(char *from, BOOL overwrite)
{
register char *out;
register int shifted;
char *out;
int shifted;
char *save;
shifted = _KJ_ROMAN;
@ -433,11 +420,10 @@ jis7_to_sj (const char *from, BOOL overwrite)
Convert FROM contain SHIFT JIS codes to 7 bits JIS codes
return converted buffer
********************************************************************/
static char *
sj_to_jis7 (const char *from, BOOL overwrite)
static char *sj_to_jis7(char *from, BOOL overwrite)
{
register char *out;
register int shifted;
char *out;
int shifted;
char *save;
shifted = _KJ_ROMAN;
@ -510,11 +496,10 @@ sj_to_jis7 (const char *from, BOOL overwrite)
Convert FROM contain 7 bits JIS(junet) codes to SHIFT JIS codes
return converted buffer
********************************************************************/
static char *
junet_to_sj (const char *from, BOOL overwrite)
static char *junet_to_sj(char *from, BOOL overwrite)
{
register char *out;
register int shifted;
char *out;
int shifted;
char *save;
shifted = _KJ_ROMAN;
@ -567,11 +552,10 @@ junet_to_sj (const char *from, BOOL overwrite)
Convert FROM contain SHIFT JIS codes to 7 bits JIS(junet) codes
return converted buffer
********************************************************************/
static char *
sj_to_junet (const char *from, BOOL overwrite)
static char *sj_to_junet(char *from, BOOL overwrite)
{
register char *out;
register int shifted;
char *out;
int shifted;
char *save;
shifted = _KJ_ROMAN;
@ -637,8 +621,7 @@ sj_to_junet (const char *from, BOOL overwrite)
HEX <-> SJIS
********************************************************************/
/* ":xx" -> a byte */
static char *
hex_to_sj (const char *from, BOOL overwrite)
static char *hex_to_sj(char *from, BOOL overwrite)
{
char *sp, *dp;
@ -663,8 +646,7 @@ hex_to_sj (const char *from, BOOL overwrite)
/*******************************************************************
kanji/kana -> ":xx"
********************************************************************/
static char *
sj_to_hex (const char *from, BOOL overwrite)
static char *sj_to_hex(char *from, BOOL overwrite)
{
unsigned char *sp, *dp;
@ -700,8 +682,7 @@ sj_to_hex (const char *from, BOOL overwrite)
/*******************************************************************
kanji/kana -> ":xx"
********************************************************************/
static char *
sj_to_cap (const char *from, BOOL overwrite)
static char *sj_to_cap(char *from, BOOL overwrite)
{
unsigned char *sp, *dp;
@ -729,8 +710,7 @@ sj_to_cap (const char *from, BOOL overwrite)
/*******************************************************************
sj to sj
********************************************************************/
static char *
sj_to_sj (const char *from, BOOL overwrite)
static char *sj_to_sj(char *from, BOOL overwrite)
{
if (!overwrite) {
strcpy (cvtbuf, (char *) from);
@ -745,11 +725,10 @@ sj_to_sj (const char *from, BOOL overwrite)
_dos_to_unix _unix_to_dos
************************************************************************/
char* (*_dos_to_unix) (const char *str, BOOL overwrite) = sj_to_sj;
char* (*_unix_to_dos) (const char *str, BOOL overwrite) = sj_to_sj;
char *(*_dos_to_unix)(char *str, BOOL overwrite) = sj_to_sj;
char *(*_unix_to_dos)(char *str, BOOL overwrite) = sj_to_sj;
static int
setup_string_function (int codes)
static int setup_string_function(int codes)
{
switch (codes) {
default:

View File

@ -1,4 +1,3 @@
#ifdef SMB_PASSWD
/*
This code is from rfc1186.
*/
@ -294,6 +293,3 @@
/*
** End of md4.c
*/
#else
void md4_dummy() {;}
#endif

View File

@ -202,8 +202,7 @@ for rename across filesystems Patch from Warren Birnbaum
<warrenb@hpcvscdp.cv.hp.com>
**********************************************************/
static int
copy_reg (const char *source, const char *dest)
static int copy_reg(char *source, const char *dest)
{
struct stat source_stats;
int ifd;

View File

@ -807,7 +807,7 @@ char *attrib_string(int mode)
/*******************************************************************
case insensitive string compararison
********************************************************************/
int StrCaseCmp(const char *s, const char *t)
int StrCaseCmp(char *s, char *t)
{
/* compare until we run out of string, either t or s, or find a difference */
/* We *must* use toupper rather than tolower here due to the
@ -871,7 +871,7 @@ int StrCaseCmp(const char *s, const char *t)
/*******************************************************************
case insensitive string compararison, length limited
********************************************************************/
int StrnCaseCmp(const char *s, const char *t, int n)
int StrnCaseCmp(char *s, char *t, int n)
{
/* compare until we run out of string, either t or s, or chars */
/* We *must* use toupper rather than tolower here due to the
@ -945,7 +945,7 @@ int StrnCaseCmp(const char *s, const char *t, int n)
/*******************************************************************
compare 2 strings
********************************************************************/
BOOL strequal(const char *s1, const char *s2)
BOOL strequal(char *s1, char *s2)
{
if (s1 == s2) return(True);
if (!s1 || !s2) return(False);
@ -956,7 +956,7 @@ BOOL strequal(const char *s1, const char *s2)
/*******************************************************************
compare 2 strings up to and including the nth char.
******************************************************************/
BOOL strnequal(const char *s1,const char *s2,int n)
BOOL strnequal(char *s1,char *s2,int n)
{
if (s1 == s2) return(True);
if (!s1 || !s2 || !n) return(False);
@ -3923,7 +3923,7 @@ void file_unlock(int fd)
is the name specified one of my netbios names
returns true is it is equal, false otherwise
********************************************************************/
BOOL is_myname(const char *s)
BOOL is_myname(char *s)
{
int n;
BOOL ret = False;

View File

@ -31,8 +31,8 @@ extern pstring myname;
extern struct in_addr ipzero;
static struct opcode_names {
const char *nmb_opcode_name;
int opcode;
char *nmb_opcode_name;
int opcode;
} nmb_header_opcode_names[] = {
{ "Query", 0 },
{"Registration", 5 },
@ -46,7 +46,7 @@ static struct opcode_names {
* Lookup a nmb opcode name.
****************************************************************************/
const char *lookup_opcode_name( int opcode )
char *lookup_opcode_name( int opcode )
{
struct opcode_names *op_namep;
int i;

View File

@ -1,4 +1,3 @@
#ifdef SMB_PASSWD
/*
Unix SMB/Netbios implementation.
Version 1.9.
@ -22,81 +21,32 @@
*/
#include "includes.h"
#include "des.h"
#include "md4.h"
extern int DEBUGLEVEL;
#include "byteorder.h"
void str_to_key(uchar *str,uchar *key)
{
void des_set_odd_parity(des_cblock *);
int i;
key[0] = str[0]>>1;
key[1] = ((str[0]&0x01)<<6) | (str[1]>>2);
key[2] = ((str[1]&0x03)<<5) | (str[2]>>3);
key[3] = ((str[2]&0x07)<<4) | (str[3]>>4);
key[4] = ((str[3]&0x0F)<<3) | (str[4]>>5);
key[5] = ((str[4]&0x1F)<<2) | (str[5]>>6);
key[6] = ((str[5]&0x3F)<<1) | (str[6]>>7);
key[7] = str[6]&0x7F;
for (i=0;i<8;i++) {
key[i] = (key[i]<<1);
}
des_set_odd_parity((des_cblock *)key);
}
void D1(uchar *k, uchar *d, uchar *out)
{
des_key_schedule ks;
des_cblock deskey;
str_to_key(k,(uchar *)deskey);
#ifdef __FreeBSD__
des_set_key(&deskey,ks);
#else /* __FreeBSD__ */
des_set_key((des_cblock *)deskey,ks);
#endif /* __FreeBsd */
des_ecb_encrypt((des_cblock *)d,(des_cblock *)out, ks, DES_DECRYPT);
}
void E1(uchar *k, uchar *d, uchar *out)
{
des_key_schedule ks;
des_cblock deskey;
str_to_key(k,(uchar *)deskey);
#ifdef __FreeBSD__
des_set_key(&deskey,ks);
#else /* __FreeBsd__ */
des_set_key((des_cblock *)deskey,ks);
#endif /* __FreeBsd__ */
des_ecb_encrypt((des_cblock *)d,(des_cblock *)out, ks, DES_ENCRYPT);
smbdes(out, d, k);
}
void E_P16(uchar *p14,uchar *p16)
{
uchar sp7[7];
/* the following constant makes us compatible with other
implementations. Note that publishing this constant does not reduce the
security of the encryption mechanism */
uchar sp8[] = {0xAA,0xD3,0xB4,0x35,0xB5,0x14,0x4,0xEE};
uchar x[8];
memset(sp7,'\0',7);
D1(sp7, sp8, x);
E1(p14, x, p16);
E1(p14+7, x, p16+8);
/* the following constant makes us compatible with other
implementations. Note that publishing this constant does not reduce the
security of the encryption mechanism */
uchar sp8[] = {0x4b, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25};
E1(p14, sp8, p16);
E1(p14+7, sp8, p16+8);
}
void E_P24(uchar *p21, uchar *c8, uchar *p24)
{
E1(p21, c8, p24);
E1(p21+7, c8, p24+8);
E1(p21+14, c8, p24+16);
E1(p21, c8, p24);
E1(p21+7, c8, p24+8);
E1(p21+14, c8, p24+16);
}
@ -191,6 +141,3 @@ void SMBNTencrypt(uchar *passwd, uchar *c8, uchar *p24)
E_P24(p21, c8, p24);
}
#else
void smbencrypt_dummy(void){}
#endif

View File

@ -598,11 +598,7 @@ static void init_globals(void)
#endif
string_set(&Globals.szPasswdChat,"*old*password* %o\\n *new*password* %n\\n *new*password* %n\\n *changed*");
string_set(&Globals.szWorkGroup, WORKGROUP);
#ifdef SMB_PASSWD
string_set(&Globals.szPasswdProgram, SMB_PASSWD);
#else
string_set(&Globals.szPasswdProgram, "/bin/passwd");
#endif
string_set(&Globals.szPrintcapname, PRINTCAP_NAME);
string_set(&Globals.szLockDir, LOCKDIR);
string_set(&Globals.szRootdir, "/");

View File

@ -1,4 +1,3 @@
#ifdef SMB_PASSWD
/*
* Unix SMB/Netbios implementation. Version 1.9. SMB parameters and setup
* Copyright (C) Andrew Tridgell 1992-1997 Modified by Jeremy Allison 1995.
@ -292,8 +291,3 @@ struct smb_passwd *get_smbpwnam(char *name)
pw_file_unlock(lockfd);
return NULL;
}
#else
void smbpass_dummy(void)
{
} /* To avoid compiler complaints */
#endif

View File

@ -440,7 +440,7 @@ static void PackDriverData(struct pack_desc* desc)
}
static int check_printq_info(struct pack_desc* desc,
int uLevel, char *id1, const char* id2)
int uLevel, char *id1, char *id2)
{
desc->subformat = NULL;
switch( uLevel ) {

View File

@ -36,7 +36,6 @@ static char this_user[100]="";
static char this_salt[100]="";
static char this_crypted[100]="";
#ifdef SMB_PASSWD
/* Data to do lanman1/2 password challenge. */
static unsigned char saved_challenge[8];
static BOOL challenge_sent=False;
@ -78,7 +77,6 @@ BOOL last_challenge(char *challenge)
memcpy(challenge,saved_challenge,8);
return(True);
}
#endif
/* this holds info on user ids that are already validated for this VC */
static user_struct *validated_users = NULL;
@ -401,7 +399,7 @@ static char *PAM_password;
* echo off means password.
*/
static int PAM_conv (int num_msg,
const struct pam_message **msg,
struct pam_message **msg,
struct pam_response **resp,
void *appdata_ptr) {
int count = 0, replies = 0;
@ -812,7 +810,6 @@ Hence we make a direct return to avoid a second chance!!!
#endif
}
#ifdef SMB_PASSWD
/****************************************************************************
core of smb password checking routine.
****************************************************************************/
@ -854,7 +851,6 @@ BOOL smb_password_check(char *password, unsigned char *part_passwd, unsigned cha
#endif
return (memcmp(p24, password, 24) == 0);
}
#endif
/****************************************************************************
check if a username/password is OK
@ -864,21 +860,16 @@ BOOL password_ok(char *user,char *password, int pwlen, struct passwd *pwd)
pstring pass2;
int level = lp_passwordlevel();
struct passwd *pass;
#ifdef SMB_PASSWD
char challenge[8];
struct smb_passwd *smb_pass;
BOOL challenge_done = False;
#endif
if (password) password[pwlen] = 0;
#ifdef SMB_PASSWD
if (pwlen == 24)
challenge_done = last_challenge(challenge);
#endif
#if DEBUG_PASSWORD
#ifdef SMB_PASSWD
if (challenge_done)
{
int i;
@ -886,10 +877,9 @@ BOOL password_ok(char *user,char *password, int pwlen, struct passwd *pwd)
for( i = 0; i < 24; i++)
DEBUG(100,("%0x ", (unsigned char)password[i]));
DEBUG(100,("]\n"));
} else {
DEBUG(100,("checking user=[%s] pass=[%s]\n",user,password));
}
else
#endif
DEBUG(100,("checking user=[%s] pass=[%s]\n",user,password));
#endif
if (!password)
@ -906,8 +896,6 @@ BOOL password_ok(char *user,char *password, int pwlen, struct passwd *pwd)
else
pass = Get_Pwnam(user,True);
#ifdef SMB_PASSWD
DEBUG(4,("SMB Password - pwlen = %d, challenge_done = %d\n", pwlen, challenge_done));
if((pwlen == 24) && challenge_done)
@ -964,7 +952,6 @@ BOOL password_ok(char *user,char *password, int pwlen, struct passwd *pwd)
DEBUG(3,("Error smb_password_check failed\n"));
}
#endif
DEBUG(4,("Checking password for user %s (l=%d)\n",user,pwlen));
@ -1587,12 +1574,12 @@ BOOL server_cryptkey(char *buf)
and the remote machine name.
*/
{
char buf[32]; /* create name as PIDname */
sprintf(buf,"%d", getpid());
strncpy(&buf[strlen(buf)], remote_machine, 31 - strlen(buf));
buf[31] = '\0';
DEBUG(1,("negprot w/password server as %s\n",buf));
name_mangle(buf,p,' ');
char buf2[32]; /* create name as PIDname */
sprintf(buf2,"%d", getpid());
strncpy(&buf2[strlen(buf2)], remote_machine, 31 - strlen(buf2));
buf2[31] = '\0';
DEBUG(1,("negprot w/password server as %s\n",buf2));
name_mangle(buf2,p,' ');
len += name_len(p);
}

View File

@ -2814,19 +2814,15 @@ int reply_lanman1(char *outbuf)
set_message(outbuf,13,doencrypt?8:0,True);
SSVAL(outbuf,smb_vwv1,secword);
#ifdef SMB_PASSWD
/* Create a token value and add it to the outgoing packet. */
if (doencrypt)
generate_next_challenge(smb_buf(outbuf));
#endif
Protocol = PROTOCOL_LANMAN1;
if (lp_security() == SEC_SERVER && server_cryptkey(outbuf)) {
DEBUG(3,("using password server validation\n"));
#ifdef SMB_PASSWD
if (doencrypt) set_challenge(smb_buf(outbuf));
#endif
}
CVAL(outbuf,smb_flg) = 0x81; /* Reply, SMBlockread, SMBwritelock supported */
@ -2865,11 +2861,9 @@ int reply_lanman2(char *outbuf)
set_message(outbuf,13,doencrypt?8:0,True);
SSVAL(outbuf,smb_vwv1,secword);
#ifdef SMB_PASSWD
/* Create a token value and add it to the outgoing packet. */
if (doencrypt)
generate_next_challenge(smb_buf(outbuf));
#endif
SIVAL(outbuf,smb_vwv6,getpid());
@ -2877,9 +2871,7 @@ int reply_lanman2(char *outbuf)
if (lp_security() == SEC_SERVER && server_cryptkey(outbuf)) {
DEBUG(3,("using password server validation\n"));
#ifdef SMB_PASSWD
if (doencrypt) set_challenge(smb_buf(outbuf));
#endif
}
CVAL(outbuf,smb_flg) = 0x81; /* Reply, SMBlockread, SMBwritelock supported */
@ -2949,7 +2941,6 @@ int reply_nt1(char *outbuf)
#endif
CVAL(outbuf,smb_vwv1) = secword;
#ifdef SMB_PASSWD
/* Create a token value and add it to the outgoing packet. */
if (doencrypt)
{
@ -2958,15 +2949,12 @@ int reply_nt1(char *outbuf)
/* Tell the nt machine how long the challenge is. */
SSVALS(outbuf,smb_vwv16+1,challenge_len);
}
#endif
Protocol = PROTOCOL_NT1;
if (lp_security() == SEC_SERVER && server_cryptkey(outbuf)) {
DEBUG(3,("using password server validation\n"));
#ifdef SMB_PASSWD
if (doencrypt) set_challenge(smb_buf(outbuf));
#endif
}
SSVAL(outbuf,smb_mid,mid); /* Restore possibly corrupted mid */

View File

@ -28,7 +28,7 @@ static char *prog_name = NULL;
* Print program usage and die.
*/
void codepage_usage(const char *progname)
void codepage_usage(char *progname)
{
fprintf(stderr, "Usage is : %s [c|d] <codepage> <inputfile> <outputfile>\n",
progname);
@ -162,7 +162,7 @@ void parse_error(char *buf, char *msg)
* Create a compiled codepage file from a codepage definition file.
*/
int do_compile(int codepage, const char *input_file, const char *output_file)
int do_compile(int codepage, char *input_file, char *output_file)
{
FILE *fp = NULL;
uint32 size = 0;
@ -307,7 +307,7 @@ definition file. File %s has %d.\n", prog_name, input_file, num_lines);
* Placeholder for now.
*/
int do_decompile( int codepage, const char *input_file, const char *output_file)
int do_decompile( int codepage, char *input_file, char *output_file)
{
uint32 size = 0;
struct stat st;

View File

@ -1,5 +1,3 @@
#ifdef SMB_PASSWD
/*
* Unix SMB/Netbios implementation. Version 1.9. smbpasswd module. Copyright
* (C) Jeremy Allison 1995-1997.
@ -20,7 +18,6 @@
*/
#include "includes.h"
#include "des.h"
/* Static buffers we will return. */
static struct smb_passwd pw_buf;
@ -569,14 +566,3 @@ Error was %d. Password file may be corrupt ! Please examine by hand !\n",
return 0;
}
#else
#include "includes.h"
int
main(int argc, char **argv)
{
printf("smb password encryption not selected in Makefile\n");
return 0;
}
#endif

View File

@ -69,7 +69,7 @@ static void show_service(int snum, int allparameters)
sname = SDEFAULTS;
else sname = lp_servicename(snum);
printf("\n<p><table border=0>\n<tr>\n<td>\n\n");
printf("\n<p><table border=0>\n<tr>\n<td></td><td>\n\n");
printf("<form method=POST>\n");
printf("<H3>%s</H3>\n", sname);
printf("<input type=hidden name=service value=\"%s\">\n", sname);