svn commit: samba r2140 - in trunk/source/libsmb: .

abartlet at samba.org abartlet at samba.org
Tue Aug 31 20:18:48 GMT 2004


Author: abartlet
Date: 2004-08-31 20:18:48 +0000 (Tue, 31 Aug 2004)
New Revision: 2140

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/trunk/source/libsmb&rev=2140&nolog=1

Log:
Merge from 3.0 -> trunk

SMB signing memory leak fix.  In entering the trans2 signing state, we
need to ensure we take that mid off the list of expected mids, as
otherwise it will stay on the list forever.

Andrew Bartlett

Modified:
   trunk/source/libsmb/smb_signing.c


Changeset:
Modified: trunk/source/libsmb/smb_signing.c
===================================================================
--- trunk/source/libsmb/smb_signing.c	2004-08-31 20:17:15 UTC (rev 2139)
+++ trunk/source/libsmb/smb_signing.c	2004-08-31 20:18:48 UTC (rev 2140)
@@ -497,6 +497,7 @@
 void cli_signing_trans_start(struct cli_state *cli, uint16 mid)
 {
 	struct smb_basic_signing_context *data = cli->sign_info.signing_context;
+	uint32 reply_seq_num;
 
 	if (!cli->sign_info.doing_signing || !data)
 		return;
@@ -504,9 +505,16 @@
 	data->trans_info = smb_xmalloc(sizeof(struct trans_info_context));
 	ZERO_STRUCTP(data->trans_info);
 
-	data->trans_info->send_seq_num = data->send_seq_num-2;
+	/* This ensures the sequence is pulled off the outstanding packet list */
+	if (!get_sequence_for_reply(&data->outstanding_packet_list, 
+				    mid, &reply_seq_num)) {
+		DEBUG(1, ("get_sequence_for_reply failed - did we enter the trans signing state without sending a packet?\n")); 
+	    return;
+	}
+
+	data->trans_info->send_seq_num = reply_seq_num - 1;
 	data->trans_info->mid = mid;
-	data->trans_info->reply_seq_num = data->send_seq_num-1;
+	data->trans_info->reply_seq_num = reply_seq_num;
 
 	DEBUG(10,("cli_signing_trans_start: storing mid = %u, reply_seq_num = %u, send_seq_num = %u \
 data->send_seq_num = %u\n",



More information about the samba-cvs mailing list