diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/lib/charset.c | 4 | ||||
-rw-r--r-- | source3/smbd/password.c | 14 |
2 files changed, 16 insertions, 2 deletions
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)* |