[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha6-117-g5bcd6d7

Günther Deschner gd at samba.org
Sat Jan 24 02:01:17 GMT 2009


The branch, master has been updated
       via  5bcd6d760b628832a43271293bee207819784001 (commit)
       via  dd2695fe52374cb72bf0954805ff614eef640eae (commit)
       via  cf41042a3c4ccf613e312570d8d93932b54dcaee (commit)
      from  d629ba480b7cd7344d842069f18fd07f088c4f2f (commit)

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


- Log -----------------------------------------------------------------
commit 5bcd6d760b628832a43271293bee207819784001
Author: Günther Deschner <gd at samba.org>
Date:   Sat Jan 24 02:59:24 2009 +0100

    Revert "s3-eventlog: trying to avoid to pass around full ndr structures in rpc_server."
    
    This reverts commit c0f1309010b79be67557af5ffbd1c429a3f3d99a.

commit dd2695fe52374cb72bf0954805ff614eef640eae
Author: Günther Deschner <gd at samba.org>
Date:   Sat Jan 24 02:10:47 2009 +0100

    s3-eventlog: fix various invalid memcpy in read_package_entry().
    
    Guenther

commit cf41042a3c4ccf613e312570d8d93932b54dcaee
Author: Günther Deschner <gd at samba.org>
Date:   Sat Jan 24 02:07:40 2009 +0100

    s3-eventlog: fix buffer allocation in eventlog read call.
    
    This broke with f6fa3080fee1b20df9f1968500840a88cf0ee592 back in April 2007...
    
    Guenther

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

Summary of changes:
 source3/rpc_parse/parse_eventlog.c   |    4 +---
 source3/rpc_server/srv_eventlog_nt.c |   27 +++++++++++----------------
 2 files changed, 12 insertions(+), 19 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/rpc_parse/parse_eventlog.c b/source3/rpc_parse/parse_eventlog.c
index a55993c..40930a2 100644
--- a/source3/rpc_parse/parse_eventlog.c
+++ b/source3/rpc_parse/parse_eventlog.c
@@ -185,6 +185,7 @@ bool eventlog_io_r_read_eventlog(const char *desc,
 	/* Now pad with whitespace until the end of the response buffer */
 
 	if (q_u->max_read_size - r_u->num_bytes_in_resp) {
+		r_u->end_of_entries_padding = PRS_ALLOC_MEM(ps, uint8_t, q_u->max_read_size - r_u->num_bytes_in_resp);
 		if (!r_u->end_of_entries_padding) {
 			return False;
 		}
@@ -192,11 +193,8 @@ bool eventlog_io_r_read_eventlog(const char *desc,
 		if(!(prs_uint8s(False, "end of entries padding", ps, 
 				depth, r_u->end_of_entries_padding,
 				(q_u->max_read_size - r_u->num_bytes_in_resp)))) {
-			free(r_u->end_of_entries_padding);
 			return False;
 		}
-
-		free(r_u->end_of_entries_padding);
 	}
 
 	/* We had better be DWORD aligned here */
diff --git a/source3/rpc_server/srv_eventlog_nt.c b/source3/rpc_server/srv_eventlog_nt.c
index 0bf0730..5f9df1b 100644
--- a/source3/rpc_server/srv_eventlog_nt.c
+++ b/source3/rpc_server/srv_eventlog_nt.c
@@ -539,30 +539,30 @@ static Eventlog_entry *read_package_entry( TALLOC_CTX *mem_ctx,
 		return NULL;
 	}
 	offset = entry->data;
-	memcpy( offset, &( entry->data_record.source_name ),
+	memcpy( offset, entry->data_record.source_name,
 		entry->data_record.source_name_len );
 	offset += entry->data_record.source_name_len;
-	memcpy( offset, &( entry->data_record.computer_name ),
+	memcpy( offset, entry->data_record.computer_name,
 		entry->data_record.computer_name_len );
 	offset += entry->data_record.computer_name_len;
 	/* SID needs to be DWORD-aligned */
 	offset += entry->data_record.sid_padding;
 	entry->record.user_sid_offset =
 		sizeof( Eventlog_record ) + ( offset - entry->data );
-	memcpy( offset, &( entry->data_record.sid ),
+	memcpy( offset, entry->data_record.sid,
 		entry->record.user_sid_length );
 	offset += entry->record.user_sid_length;
 	/* Now do the strings */
 	entry->record.string_offset =
 		sizeof( Eventlog_record ) + ( offset - entry->data );
-	memcpy( offset, &( entry->data_record.strings ),
+	memcpy( offset, entry->data_record.strings,
 		entry->data_record.strings_len );
 	offset += entry->data_record.strings_len;
 	/* Now do the data */
 	entry->record.data_length = entry->data_record.user_data_len;
 	entry->record.data_offset =
 		sizeof( Eventlog_record ) + ( offset - entry->data );
-	memcpy( offset, &( entry->data_record.user_data ),
+	memcpy( offset, entry->data_record.user_data,
 		entry->data_record.user_data_len );
 	offset += entry->data_record.user_data_len;
 
@@ -578,17 +578,15 @@ static Eventlog_entry *read_package_entry( TALLOC_CTX *mem_ctx,
 /********************************************************************
  ********************************************************************/
 
-static bool add_record_to_resp( Eventlog_entry *entry,
-				uint32_t *num_records,
-				uint32_t *num_bytes_in_resp,
+static bool add_record_to_resp( EVENTLOG_R_READ_EVENTLOG * r_u,
 				Eventlog_entry * ee_new )
 {
 	Eventlog_entry *insert_point;
 
-	insert_point = entry;
+	insert_point = r_u->entry;
 
 	if ( NULL == insert_point ) {
-		entry = ee_new;
+		r_u->entry = ee_new;
 		ee_new->next = NULL;
 	} else {
 		while ( ( NULL != insert_point->next ) ) {
@@ -597,8 +595,8 @@ static bool add_record_to_resp( Eventlog_entry *entry,
 		ee_new->next = NULL;
 		insert_point->next = ee_new;
 	}
-	(*num_records)++;
-	*num_bytes_in_resp += ee_new->record.length;
+	r_u->num_records++;
+	r_u->num_bytes_in_resp += ee_new->record.length;
 
 	return True;
 }
@@ -775,10 +773,7 @@ NTSTATUS _eventlog_read_eventlog( pipes_struct * p,
 			break;
 		}
 
-		add_record_to_resp( r_u->entry,
-				    &r_u->num_records, &r_u->num_bytes_in_resp,
-				    ee_new );
-
+		add_record_to_resp( r_u, ee_new );
 		bytes_left -= ee_new->record.length;
 		TALLOC_FREE(entry);
 		num_records_read = r_u->num_records - num_records_read;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list