[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Mon Apr 2 15:03:04 MDT 2012


The branch, master has been updated
       via  c7a3b8a s4:smb_server/smb2: add missing 'return;' statements in smb2srv_chain_reply()
       via  d72641e s4:smb_server/smb2: after smbsrv_terminate_connection() we have to return
       via  e01d6f4 s4:smb_server/smb2: fix memory leak in smb2srv_chain_reply()
       via  dca4e6e s4:smb_server/smb2: use helper variable smb2srv_chain_reply()
       via  6865241 s4:smb_server/smb: remove a request from the list before adding the next one in a chain.
      from  831a97c s3: Notifies should never time out

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit c7a3b8ae21523f6af2c3e3fea1a0d3fcf9706d4c
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Mar 26 13:50:44 2012 +0200

    s4:smb_server/smb2: add missing 'return;' statements in smb2srv_chain_reply()
    
    metze
    
    Autobuild-User: Stefan Metzmacher <metze at samba.org>
    Autobuild-Date: Mon Apr  2 23:02:53 CEST 2012 on sn-devel-104

commit d72641ef769da6cba8fd8422586121c79ad3af42
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Mar 26 13:49:36 2012 +0200

    s4:smb_server/smb2: after smbsrv_terminate_connection() we have to return
    
    req is a talloc child of the connection...
    
    metze

commit e01d6f4af02160199a014b9ea3e05a56c47f9f1f
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Mar 26 13:48:51 2012 +0200

    s4:smb_server/smb2: fix memory leak in smb2srv_chain_reply()
    
    metze

commit dca4e6eb6e199e35b50a36ea3861a5d3429f6804
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Mar 26 13:47:39 2012 +0200

    s4:smb_server/smb2: use helper variable smb2srv_chain_reply()
    
    metze

commit 6865241fdde71c5f7bbe85b3b88cb57ca14578b2
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Mar 19 23:52:25 2012 +0100

    s4:smb_server/smb: remove a request from the list before adding the next one in a chain.
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 source4/smb_server/smb/receive.c  |    1 +
 source4/smb_server/smb2/receive.c |   19 ++++++++++++-------
 2 files changed, 13 insertions(+), 7 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/smb_server/smb/receive.c b/source4/smb_server/smb/receive.c
index 8e3bab8..b100757 100644
--- a/source4/smb_server/smb/receive.c
+++ b/source4/smb_server/smb/receive.c
@@ -633,6 +633,7 @@ void smbsrv_chain_reply(struct smbsrv_request *req)
 	SSVAL(req->out.vwv, VWV(1), req->out.size - NBT_HDR_SIZE);
 
 	/* cleanup somestuff for the next request */
+	DLIST_REMOVE(req->smb_conn->requests, req);
 	talloc_free(req->ntvfs);
 	req->ntvfs = NULL;
 	talloc_free(req->io_ptr);
diff --git a/source4/smb_server/smb2/receive.c b/source4/smb_server/smb2/receive.c
index 141fdd8..3b54c97 100644
--- a/source4/smb_server/smb2/receive.c
+++ b/source4/smb_server/smb2/receive.c
@@ -155,6 +155,7 @@ static NTSTATUS smb2srv_reply(struct smb2srv_request *req);
 static void smb2srv_chain_reply(struct smb2srv_request *p_req)
 {
 	NTSTATUS status;
+	struct smbsrv_connection *smb_conn = p_req->smb_conn;
 	struct smb2srv_request *req;
 	uint32_t chain_offset;
 	uint32_t protocol_version;
@@ -163,6 +164,8 @@ static void smb2srv_chain_reply(struct smb2srv_request *p_req)
 	uint32_t flags;
 	uint32_t last_hdr_offset;
 
+	talloc_steal(req, p_req);
+
 	last_hdr_offset = p_req->in.hdr - p_req->in.buffer;
 
 	chain_offset = p_req->chain_offset;
@@ -171,7 +174,7 @@ static void smb2srv_chain_reply(struct smb2srv_request *p_req)
 	if (p_req->in.size < (last_hdr_offset + chain_offset + SMB2_MIN_SIZE_NO_BODY)) {
 		DEBUG(2,("Invalid SMB2 chained packet at offset 0x%X from last hdr 0x%X\n",
 			chain_offset, last_hdr_offset));
-		smbsrv_terminate_connection(p_req->smb_conn, "Invalid SMB2 chained packet");
+		smbsrv_terminate_connection(smb_conn, "Invalid SMB2 chained packet");
 		return;
 	}
 
@@ -179,13 +182,13 @@ static void smb2srv_chain_reply(struct smb2srv_request *p_req)
 	if (protocol_version != SMB2_MAGIC) {
 		DEBUG(2,("Invalid SMB chained packet: protocol prefix: 0x%08X\n",
 			 protocol_version));
-		smbsrv_terminate_connection(p_req->smb_conn, "NON-SMB2 chained packet");
+		smbsrv_terminate_connection(smb_conn, "NON-SMB2 chained packet");
 		return;
 	}
 
-	req = smb2srv_init_request(p_req->smb_conn);
+	req = smb2srv_init_request(smb_conn);
 	if (!req) {
-		smbsrv_terminate_connection(p_req->smb_conn, "SMB2 chained packet - no memory");
+		smbsrv_terminate_connection(smb_conn, "SMB2 chained packet - no memory");
 		return;
 	}
 
@@ -206,9 +209,11 @@ static void smb2srv_chain_reply(struct smb2srv_request *p_req)
 		   other packet types */
 		uint16_t opcode	= SVAL(req->in.hdr, SMB2_HDR_OPCODE);
 		if (opcode == SMB2_OP_NEGPROT) {
-			smbsrv_terminate_connection(req->smb_conn, "Bad body size in SMB2 negprot");			
+			smbsrv_terminate_connection(smb_conn, "Bad body size in SMB2 negprot");
+			return;
 		} else {
 			smb2srv_send_error(req, NT_STATUS_INVALID_PARAMETER);
+			return;
 		}
 	}
 
@@ -248,8 +253,7 @@ static void smb2srv_chain_reply(struct smb2srv_request *p_req)
 
 	status = smb2srv_reply(req);
 	if (!NT_STATUS_IS_OK(status)) {
-		smbsrv_terminate_connection(req->smb_conn, nt_errstr(status));
-		talloc_free(req);
+		smbsrv_terminate_connection(smb_conn, nt_errstr(status));
 		return;
 	}
 }
@@ -284,6 +288,7 @@ void smb2srv_send_reply(struct smb2srv_request *req)
 	status = packet_send(req->smb_conn->packet, blob);
 	if (!NT_STATUS_IS_OK(status)) {
 		smbsrv_terminate_connection(req->smb_conn, nt_errstr(status));
+		return;
 	}
 	if (req->chain_offset) {
 		smb2srv_chain_reply(req);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list