From a3de6a813ed058255f1e9b2da2aa181f5becc51f Mon Sep 17 00:00:00 2001 From: Samba Release Account Date: Tue, 22 Jul 1997 19:04:40 +0000 Subject: charset.c: Fixed signed/unsigned issues. password.c: Fixed problem with MS-Exchange services. Jeremy (jallison@whistle.com) (This used to be commit e723dd3deec00a91568c5aa546374409ce7ba379) --- source3/lib/charset.c | 4 ++-- source3/smbd/password.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'source3') diff --git a/source3/lib/charset.c b/source3/lib/charset.c index b463344daa..6b4f0b07bc 100644 --- a/source3/lib/charset.c +++ b/source3/lib/charset.c @@ -273,12 +273,12 @@ void add_char_string(char *s) for (t=strtok(extra_chars," \t\r\n"); t; t=strtok(NULL," \t\r\n")) { char c1=0,c2=0; int i1=0,i2=0; - if (isdigit(*t) || (*t)=='-') { + if (isdigit((unsigned char)*t) || (*t)=='-') { sscanf(t,"%i:%i",&i1,&i2); add_dos_char(i1,True,i2,True); } else { sscanf(t,"%c:%c",&c1,&c2); - add_dos_char(c1,True,c2, True); + add_dos_char((unsigned char)c1,True,(unsigned char)c2, True); } } diff --git a/source3/smbd/password.c b/source3/smbd/password.c index e00028d87e..eb837c2584 100644 --- a/source3/smbd/password.c +++ b/source3/smbd/password.c @@ -153,12 +153,26 @@ uint16 register_vuid(int uid,int gid, char *name,BOOL guest) struct passwd *pwfile; /* for getting real name from passwd file */ int real_name_len; +#if 0 + /* + * After observing MS-Exchange services writing to a Samba share + * I belive this code is incorrect. Each service does it's own + * sessionsetup_and_X for the same user, and as each service shuts + * down, it does a user_logoff_and_X. As we are consolidating multiple + * sessionsetup_and_X's onto the same vuid here, when the first service + * shuts down, it invalidates all the open files for the other services. + * Hence I am removing this code and forcing each sessionsetup_and_X + * to get a new vuid. + * Jeremy Allison. (jallison@whistle.com). + */ + int i; for(i = 0; i < num_validated_users; i++) { vuser = &validated_users[i]; if( vuser->uid == uid ) return (uint16)(i + VUID_OFFSET); /* User already validated */ } +#endif validated_users = (user_struct *)Realloc(validated_users, sizeof(user_struct)* -- cgit