[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-233-ge58ade4

Volker Lendecke vlendec at samba.org
Sat Mar 7 14:21:31 GMT 2009


The branch, master has been updated
       via  e58ade4136b40d82c24f3556845e7412a3330992 (commit)
       via  c29826a697f8d92b6b481a694c05b4d8a8e7424d (commit)
      from  ca9d67bf187409e92d1800b86aa7f45e9d2f7260 (commit)

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


- Log -----------------------------------------------------------------
commit e58ade4136b40d82c24f3556845e7412a3330992
Author: Volker Lendecke <vl at samba.org>
Date:   Fri Mar 6 14:24:59 2009 +0100

    Fix a smbclient segfault against security=share servers

commit c29826a697f8d92b6b481a694c05b4d8a8e7424d
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Mar 3 14:05:56 2009 +0100

    Fix some nonempty blank lines

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

Summary of changes:
 source3/libsmb/cliconnect.c  |   13 +++++++++--
 source3/libsmb/smb_signing.c |   44 +++++++++++++++++++++---------------------
 2 files changed, 32 insertions(+), 25 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
index e3d1b65..ec29324 100644
--- a/source3/libsmb/cliconnect.c
+++ b/source3/libsmb/cliconnect.c
@@ -1297,10 +1297,17 @@ struct async_req *cli_tcon_andx_send(TALLOC_CTX *mem_ctx,
 	return result;
 
  access_denied:
-	result = async_req_new(mem_ctx);
-	if (async_post_ntstatus(result, ev, NT_STATUS_ACCESS_DENIED)) {
-		return result;
+	{
+		struct cli_request *state;
+		if (!async_req_setup(mem_ctx, &result, &state,
+				     struct cli_request)) {
+			goto fail;
+		}
+		if (async_post_ntstatus(result, ev, NT_STATUS_ACCESS_DENIED)) {
+			return result;
+		}
 	}
+ fail:
 	TALLOC_FREE(result);
 	return NULL;
 }
diff --git a/source3/libsmb/smb_signing.c b/source3/libsmb/smb_signing.c
index 55b30d4..a3ed0e7 100644
--- a/source3/libsmb/smb_signing.c
+++ b/source3/libsmb/smb_signing.c
@@ -3,17 +3,17 @@
    SMB Signing Code
    Copyright (C) Jeremy Allison 2003.
    Copyright (C) Andrew Bartlett <abartlet at samba.org> 2002-2003
-   
+
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
@@ -119,14 +119,14 @@ static bool cli_set_smb_signing_common(struct cli_state *cli)
 	if (cli->sign_info.doing_signing) {
 		return False;
 	}
-	
+
 	if (cli->sign_info.free_signing_context)
 		cli->sign_info.free_signing_context(&cli->sign_info);
 
 	/* These calls are INCOMPATIBLE with SMB signing */
 	cli->readbraw_supported = False;
 	cli->writebraw_supported = False;
-	
+
 	return True;
 }
 
@@ -196,7 +196,7 @@ static void null_free_signing_context(struct smb_sign_info *si)
 static bool null_set_signing(struct smb_sign_info *si)
 {
 	si->signing_context = NULL;
-	
+
 	si->sign_outgoing_message = null_sign_outgoing_message;
 	si->check_incoming_message = null_check_incoming_message;
 	si->free_signing_context = null_free_signing_context;
@@ -207,7 +207,7 @@ static bool null_set_signing(struct smb_sign_info *si)
 /**
  * Free the signing context
  */
- 
+
 static void free_signing_context(struct smb_sign_info *si)
 {
 	if (si->free_signing_context) {
@@ -227,7 +227,7 @@ static bool signing_good(const char *inbuf, struct smb_sign_info *si,
 		if (!si->doing_signing) {
 			si->doing_signing = True;
 		}
-		
+
 		if (!si->seen_valid) {
 			si->seen_valid = True;
 		}
@@ -289,7 +289,7 @@ static void simple_packet_signature(struct smb_basic_signing_context *data,
 
 	/* Calculate the 16 byte MAC - but don't alter the data in the
 	   incoming packet.
-	   
+
 	   This makes for a bit of fussing about, but it's not too bad.
 	*/
 	MD5Init(&md5_ctx);
@@ -368,7 +368,7 @@ static void client_sign_outgoing_message(char *outbuf, struct smb_sign_info *si)
 	   I can isolate the fix here rather than re-adding the trans
 	   signing on/off calls in libsmb/clitrans2.c JRA.
 	 */
-	
+
 	if (store_sequence_for_reply(&data->outstanding_packet_list, SVAL(outbuf,smb_mid), data->send_seq_num + 1)) {
 		data->send_seq_num += 2;
 	}
@@ -409,11 +409,11 @@ static bool client_check_incoming_message(const char *inbuf,
 
 	server_sent_mac = (unsigned char *)&inbuf[smb_ss_field];
 	good = (memcmp(server_sent_mac, calc_md5_mac, 8) == 0);
-	
+
 	if (!good) {
 		DEBUG(5, ("client_check_incoming_message: BAD SIG: wanted SMB signature of\n"));
 		dump_data(5, calc_md5_mac, 8);
-		
+
 		DEBUG(5, ("client_check_incoming_message: BAD SIG: got SMB signature of\n"));
 		dump_data(5, server_sent_mac, 8);
 #if 1 /* JRATEST */
@@ -447,7 +447,7 @@ static void simple_free_signing_context(struct smb_sign_info *si)
 		(struct smb_basic_signing_context *)si->signing_context;
 	struct outstanding_packet_lookup *list;
 	struct outstanding_packet_lookup *next;
-	
+
 	for (list = data->outstanding_packet_list; list; list = next) {
 		next = list->next;
 		DLIST_REMOVE(data->outstanding_packet_list, list);
@@ -486,7 +486,7 @@ bool cli_simple_set_signing(struct cli_state *cli,
 	memset(data, '\0', sizeof(*data));
 
 	cli->sign_info.signing_context = data;
-	
+
 	data->mac_key = data_blob(NULL, response.length + user_session_key.length);
 
 	memcpy(&data->mac_key.data[0], user_session_key.data, user_session_key.length);
@@ -571,7 +571,7 @@ bool cli_temp_set_signing(struct cli_state *cli)
 	}
 
 	cli->sign_info.signing_context = NULL;
-	
+
 	cli->sign_info.sign_outgoing_message = temp_sign_outgoing_message;
 	cli->sign_info.check_incoming_message = temp_check_incoming_message;
 	cli->sign_info.free_signing_context = temp_free_signing_context;
@@ -587,7 +587,7 @@ void cli_free_signing_context(struct cli_state *cli)
 /**
  * Sign a packet with the current mechanism
  */
- 
+
 void cli_calculate_sign_mac(struct cli_state *cli, char *buf)
 {
 	cli->sign_info.sign_outgoing_message(buf, &cli->sign_info);
@@ -598,7 +598,7 @@ void cli_calculate_sign_mac(struct cli_state *cli, char *buf)
  * @return False if we had an established signing connection
  *         which had a bad checksum, True otherwise.
  */
- 
+
 bool cli_check_sign_mac(struct cli_state *cli, char *buf)
 {
 	if (!cli->sign_info.check_incoming_message(buf, &cli->sign_info, True)) {
@@ -746,7 +746,7 @@ static bool srv_check_incoming_message(const char *inbuf,
 
 	server_sent_mac = (unsigned char *)&inbuf[smb_ss_field];
 	good = (memcmp(server_sent_mac, calc_md5_mac, 8) == 0);
-	
+
 	if (!good) {
 
 		if (saved_seq) {
@@ -758,7 +758,7 @@ static bool srv_check_incoming_message(const char *inbuf,
 						(unsigned int)reply_seq_number));
 			dump_data(5, server_sent_mac, 8);
 		}
-		
+
 #if 1 /* JRATEST */
 		{
 			int i;
@@ -971,17 +971,17 @@ void srv_set_signing(const DATA_BLOB user_session_key, const DATA_BLOB response)
 	if (srv_sign_info.doing_signing) {
 		return;
 	}
-	
+
 	if (srv_sign_info.free_signing_context)
 		srv_sign_info.free_signing_context(&srv_sign_info);
-	
+
 	srv_sign_info.doing_signing = True;
 
 	data = SMB_XMALLOC_P(struct smb_basic_signing_context);
 	memset(data, '\0', sizeof(*data));
 
 	srv_sign_info.signing_context = data;
-	
+
 	data->mac_key = data_blob(NULL, response.length + user_session_key.length);
 
 	memcpy(&data->mac_key.data[0], user_session_key.data, user_session_key.length);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list