diff options
author | Samba Release Account <samba-bugs@samba.org> | 1997-07-22 19:04:40 +0000 |
---|---|---|
committer | Samba Release Account <samba-bugs@samba.org> | 1997-07-22 19:04:40 +0000 |
commit | a3de6a813ed058255f1e9b2da2aa181f5becc51f (patch) | |
tree | e73f409e495fa745aa601454b82809b1ac6a125c /source3 | |
parent | 0cdc68332df6beaa47307f730fda793bf295ef96 (diff) | |
download | samba-a3de6a813ed058255f1e9b2da2aa181f5becc51f.tar.gz samba-a3de6a813ed058255f1e9b2da2aa181f5becc51f.tar.bz2 samba-a3de6a813ed058255f1e9b2da2aa181f5becc51f.zip |
charset.c: Fixed signed/unsigned issues.
password.c: Fixed problem with MS-Exchange services.
Jeremy (jallison@whistle.com)
(This used to be commit e723dd3deec00a91568c5aa546374409ce7ba379)
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)* |