summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
Diffstat (limited to 'source3')
-rw-r--r--source3/lib/charset.c4
-rw-r--r--source3/smbd/password.c14
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)*