The Samba-Bugzilla – Attachment 6850 Details for
Bug 8334
smb2: smbd logs Invalid SMB packet: first request: 0x0008 and crashes
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
8334-2.patch (text/plain), 3.95 KB, created by
Volker Lendecke
on 2011-09-02 11:06:03 UTC
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Volker Lendecke
Created:
2011-09-02 11:06:03 UTC
Size:
3.95 KB
patch
obsolete
>From 83cd30553af708a2406d57ce969dca5574dba06d Mon Sep 17 00:00:00 2001 >From: Volker Lendecke <vl@samba.org> >Date: Fri, 20 May 2011 13:07:17 +0200 >Subject: [PATCH 1/2] s3: Fork the echo handler only after SMB1 negprot is done > >This enables activating the echo responder also if SMB2 is enabled, albeit it >will only be used for SMB1 at this moment. > >Autobuild-User: Volker Lendecke <vlendec@samba.org> >Autobuild-Date: Fri May 20 15:06:03 CEST 2011 on sn-devel-104 >--- > source3/smbd/negprot.c | 5 +++++ > source3/smbd/process.c | 9 ++------- > source3/smbd/proto.h | 1 + > 3 files changed, 8 insertions(+), 7 deletions(-) > >diff --git a/source3/smbd/negprot.c b/source3/smbd/negprot.c >index a2e7e0b..562dcea 100644 >--- a/source3/smbd/negprot.c >+++ b/source3/smbd/negprot.c >@@ -716,6 +716,11 @@ void reply_negprot(struct smb_request *req) > } > > TALLOC_FREE(cliprotos); >+ >+ if (lp_async_smb_echo_handler() && !fork_echo_handler(sconn)) { >+ exit_server("Failed to fork echo handler"); >+ } >+ > END_PROFILE(SMBnegprot); > return; > } >diff --git a/source3/smbd/process.c b/source3/smbd/process.c >index ccbaec5..a337469 100644 >--- a/source3/smbd/process.c >+++ b/source3/smbd/process.c >@@ -2806,7 +2806,7 @@ static void smbd_echo_loop(struct smbd_server_connection *sconn, > /* > * Handle SMBecho requests in a forked child process > */ >-static bool fork_echo_handler(struct smbd_server_connection *sconn) >+bool fork_echo_handler(struct smbd_server_connection *sconn) > { > int listener_pipe[2]; > int res; >@@ -2920,8 +2920,7 @@ void smbd_process(struct smbd_server_connection *sconn) > const char *remaddr = NULL; > int ret; > >- if (lp_maxprotocol() == PROTOCOL_SMB2 && >- !lp_async_smb_echo_handler()) { >+ if (lp_maxprotocol() == PROTOCOL_SMB2) { > /* > * We're not making the decision here, > * we're just allowing the client >@@ -3042,10 +3041,6 @@ void smbd_process(struct smbd_server_connection *sconn) > exit_server("Failed to init smb_signing"); > } > >- if (lp_async_smb_echo_handler() && !fork_echo_handler(sconn)) { >- exit_server("Failed to fork echo handler"); >- } >- > /* Setup oplocks */ > if (!init_oplocks(sconn->msg_ctx)) > exit_server("Failed to init oplocks"); >diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h >index b7bb063..6cbbcfa 100644 >--- a/source3/smbd/proto.h >+++ b/source3/smbd/proto.h >@@ -793,6 +793,7 @@ size_t req_wct_ofs(struct smb_request *req); > void chain_reply(struct smb_request *req); > bool req_is_in_chain(struct smb_request *req); > void smbd_process(struct smbd_server_connection *sconn); >+bool fork_echo_handler(struct smbd_server_connection *sconn); > > /* The following definitions come from smbd/quotas.c */ > >-- >1.7.0.4 > > >From 623003e59fe7fd683d630c11df33856ffefe7397 Mon Sep 17 00:00:00 2001 >From: Volker Lendecke <vl@samba.org> >Date: Wed, 31 Aug 2011 15:06:35 +0200 >Subject: [PATCH 2/2] s3: Do not fork the echo handler for smb2 > >If a smb1 negprot negotiated smb2 we forked the echo responder. This will >eventually lead to a panic from > >[2011/08/30 10:33:29.212578, 0, pid=3846917] smbd/smb2_server.c:243(smbd_smb2_request_create) > Invalid SMB packet: first request: 0x0009 > >because from the echo responder we always read using the normal smb1 protocol >handling routine. If that is a bit down the smb2 stream, we get a non-negprot >packet and panic. > >BTW, the echo responder is not required for smb2 anyway, Microsoft confirmed >that it probes the server liveness using TCP keepalives and not smb2 echo >requests. >--- > source3/smbd/negprot.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > >diff --git a/source3/smbd/negprot.c b/source3/smbd/negprot.c >index 562dcea..a628514 100644 >--- a/source3/smbd/negprot.c >+++ b/source3/smbd/negprot.c >@@ -717,7 +717,8 @@ void reply_negprot(struct smb_request *req) > > TALLOC_FREE(cliprotos); > >- if (lp_async_smb_echo_handler() && !fork_echo_handler(sconn)) { >+ if (lp_async_smb_echo_handler() && (get_Protocol() < PROTOCOL_SMB2) && >+ !fork_echo_handler(sconn)) { > exit_server("Failed to fork echo handler"); > } > >-- >1.7.0.4 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
jra
:
review+
Actions:
View
Attachments on
bug 8334
:
6726
|
6729
|
6844
| 6850