summaryrefslogtreecommitdiff
path: root/source3/smbd/sesssetup.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2003-12-01 02:25:56 +0000
committerJeremy Allison <jra@samba.org>2003-12-01 02:25:56 +0000
commit6bb8f54e018db066d93f960ec0f257a77671b593 (patch)
treeba7bc88e48378d44d0f27c8be3e5f693ed7f06ab /source3/smbd/sesssetup.c
parent12d3246a6c0fe2d6241d7f7ec8573b263a559390 (diff)
downloadsamba-6bb8f54e018db066d93f960ec0f257a77671b593.tar.gz
samba-6bb8f54e018db066d93f960ec0f257a77671b593.tar.bz2
samba-6bb8f54e018db066d93f960ec0f257a77671b593.zip
Don't automatically set nt status code flag unless client tells us it can
cope. Jeremy. (This used to be commit 0d82ac57a59276adb403f8e023578c2d6d5136e4)
Diffstat (limited to 'source3/smbd/sesssetup.c')
-rw-r--r--source3/smbd/sesssetup.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/source3/smbd/sesssetup.c b/source3/smbd/sesssetup.c
index 64c25db2ab..fb0744bb73 100644
--- a/source3/smbd/sesssetup.c
+++ b/source3/smbd/sesssetup.c
@@ -472,6 +472,11 @@ static int reply_sesssetup_and_X_spnego(connection_struct *conn, char *inbuf,
if (global_client_caps == 0) {
global_client_caps = IVAL(inbuf,smb_vwv10);
+
+ if (global_client_caps & CAP_STATUS32) {
+ add_to_common_flags2(FLAGS2_32_BIT_ERROR_CODES);
+ }
+
}
p = (uint8 *)smb_buf(inbuf);
@@ -615,17 +620,22 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
enum remote_arch_types ra_type = get_remote_arch();
char *p = smb_buf(inbuf);
- if(global_client_caps == 0)
+ if(global_client_caps == 0) {
global_client_caps = IVAL(inbuf,smb_vwv11);
- /* client_caps is used as final determination if client is NT or Win95.
- This is needed to return the correct error codes in some
- circumstances.
- */
+ if (global_client_caps & CAP_STATUS32) {
+ add_to_common_flags2(FLAGS2_32_BIT_ERROR_CODES);
+ }
+
+ /* client_caps is used as final determination if client is NT or Win95.
+ This is needed to return the correct error codes in some
+ circumstances.
+ */
- if(ra_type == RA_WINNT || ra_type == RA_WIN2K || ra_type == RA_WIN95) {
- if(!(global_client_caps & (CAP_NT_SMBS | CAP_STATUS32))) {
- set_remote_arch( RA_WIN95);
+ if(ra_type == RA_WINNT || ra_type == RA_WIN2K || ra_type == RA_WIN95) {
+ if(!(global_client_caps & (CAP_NT_SMBS | CAP_STATUS32))) {
+ set_remote_arch( RA_WIN95);
+ }
}
}
@@ -686,7 +696,7 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
ra_lanman_string( native_lanman );
}
-
+
if (SVAL(inbuf,smb_vwv4) == 0) {
setup_new_vc_session();
}