[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-test-1819-gc2e786d

Günther Deschner gd at samba.org
Mon Feb 4 10:35:12 GMT 2008


The branch, v3-2-test has been updated
       via  c2e786d4e2cb53b5a8be45278f221acaa7f5122a (commit)
       via  c56b702454c82b7aa7debbfc7f270b2d2b10226d (commit)
       via  f3377eb41d13b13082cd787e5437d0a92497a6b5 (commit)
       via  15d22925def45f1f8cd2d356a7f580fb4bfd05ef (commit)
       via  ef293be6cb95225f10e8062b3089dc1bbe5fd013 (commit)
       via  f8a3dc350014ef08fe2d5a702dafdb5d0583ffef (commit)
       via  9db324ac2a9c4767a109e136e15c35e2a89f57e2 (commit)
       via  badbdf1b88b270d298d44ed6fddb0c31fbcb3717 (commit)
       via  26eadadbf628f4d3aa4cd0ab4b55d47dc79c80ba (commit)
       via  70a4ba798cdd3b4daa01c2f6aa693de34288c8b9 (commit)
       via  f837fff80ef369133761f7a33a616fd4721c5a68 (commit)
       via  a6a5d99f5206dc4b94f3d0ecceb5198d66afdf41 (commit)
       via  ff6fb5de32ee81efc88d8c15f13c302e21790eee (commit)
       via  a939271b0758731debfb76eb512ccc1c8270e1fb (commit)
       via  cfb4c6d82f84eb3a434f8a3e07b8281636f192db (commit)
       via  382de7c06092805738f40df69f6c1f71858f6730 (commit)
       via  0c8e0916d7a7a403255c814536f1ebde3c5c9905 (commit)
       via  af30a6373e7d85df4bb99e153588498938ddc368 (commit)
      from  90982cf43ab549a19b4d45860504bb7db57c7c8a (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit c2e786d4e2cb53b5a8be45278f221acaa7f5122a
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 11:33:06 2008 +0100

    Remove unused arguments in read_package_entry() in the eventlog rpc server.
    
    Guenther

commit c56b702454c82b7aa7debbfc7f270b2d2b10226d
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 11:28:15 2008 +0100

    Re-run make idl.
    
    Guenther

commit f3377eb41d13b13082cd787e5437d0a92497a6b5
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 11:27:22 2008 +0100

    Fix IDL for eventlog_ReadEventLogW().
    
    Guenther

commit 15d22925def45f1f8cd2d356a7f580fb4bfd05ef
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 11:10:53 2008 +0100

    Remove unused marshalling for EVENTLOG_OPEN_EVENTLOG.
    
    Guenther

commit ef293be6cb95225f10e8062b3089dc1bbe5fd013
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 11:10:18 2008 +0100

    Use pidl for _eventlog_OpenEventLogW().
    
    Guenther

commit f8a3dc350014ef08fe2d5a702dafdb5d0583ffef
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 11:08:36 2008 +0100

    Re-run make idl.
    
    Guenther

commit 9db324ac2a9c4767a109e136e15c35e2a89f57e2
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 11:07:41 2008 +0100

    Fix IDL for eventlog_OpenEventLogW().
    
    Guenther

commit badbdf1b88b270d298d44ed6fddb0c31fbcb3717
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 10:56:16 2008 +0100

    Remove unused marshalling for EVENTLOG_CLEAR_EVENTLOG.
    
    Guenther

commit 26eadadbf628f4d3aa4cd0ab4b55d47dc79c80ba
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 10:55:14 2008 +0100

    Copy inline comment for _eventlog_ClearEventLogW() from rpc_parse to rpc_server.
    
    Guenther

commit 70a4ba798cdd3b4daa01c2f6aa693de34288c8b9
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 10:53:59 2008 +0100

    Use pidl for _eventlog_ClearEventLogW().
    
    Guenther

commit f837fff80ef369133761f7a33a616fd4721c5a68
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 10:45:50 2008 +0100

    Remove unused marshalling for EVENTLOG_GET_OLDEST_ENTRY.
    
    Guenther

commit a6a5d99f5206dc4b94f3d0ecceb5198d66afdf41
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 10:44:51 2008 +0100

    Use pidl for _eventlog_GetOldestRecord().
    
    Guenther

commit ff6fb5de32ee81efc88d8c15f13c302e21790eee
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 10:44:00 2008 +0100

    Re-run make idl.
    
    Guenther

commit a939271b0758731debfb76eb512ccc1c8270e1fb
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 10:42:33 2008 +0100

    Fill in IDL eventlog_GetOldestRecord() based on samba3 rpc.
    
    Guenther

commit cfb4c6d82f84eb3a434f8a3e07b8281636f192db
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 10:15:19 2008 +0100

    Re-run make idl.
    
    Guenther

commit 382de7c06092805738f40df69f6c1f71858f6730
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 10:14:08 2008 +0100

    Fix IDL for eventlog_ClearEventLogW.
    
    As of existing samba3 rpc code, unknown is backupfile.
    
    Guenther

commit 0c8e0916d7a7a403255c814536f1ebde3c5c9905
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 10:12:08 2008 +0100

    Remove unused marshalling for EVENTLOG_GET_NUM_RECORDS.
    
    Guenther

commit af30a6373e7d85df4bb99e153588498938ddc368
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 4 10:10:12 2008 +0100

    Use pidl for _eventlog_GetNumRecords().
    
    Guenther

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

Summary of changes:
 source/include/rpc_eventlog.h        |   57 ----------
 source/librpc/gen_ndr/cli_eventlog.c |   14 ++-
 source/librpc/gen_ndr/cli_eventlog.h |   10 +-
 source/librpc/gen_ndr/eventlog.h     |   13 ++-
 source/librpc/gen_ndr/ndr_eventlog.c |  111 +++++++++++++++----
 source/librpc/gen_ndr/srv_eventlog.c |    7 +
 source/librpc/idl/eventlog.idl       |   19 ++--
 source/rpc_parse/parse_eventlog.c    |  200 ----------------------------------
 source/rpc_server/srv_eventlog.c     |   88 +--------------
 source/rpc_server/srv_eventlog_nt.c  |  116 ++++++++------------
 10 files changed, 180 insertions(+), 455 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/rpc_eventlog.h b/source/include/rpc_eventlog.h
index 9ec76a0..3f5d03e 100644
--- a/source/include/rpc_eventlog.h
+++ b/source/include/rpc_eventlog.h
@@ -60,51 +60,6 @@ typedef struct elog_tdb {
 
 /***********************************/
 
-typedef struct {
-	uint16 unknown1;
-	uint16 unknown2;
-} EVENTLOG_OPEN_UNKNOWN0;
-
-typedef struct {
-	EVENTLOG_OPEN_UNKNOWN0 *unknown0;
-	UNISTR4 logname;
-	UNISTR4 servername;
-	uint32 unknown1;
-	uint32 unknown2;
-} EVENTLOG_Q_OPEN_EVENTLOG;
-
-typedef struct {
-	POLICY_HND handle;
-	NTSTATUS status;
-} EVENTLOG_R_OPEN_EVENTLOG;
-
-
-/***********************************/
-
-typedef struct {
-	POLICY_HND handle;
-} EVENTLOG_Q_GET_NUM_RECORDS;
-
-typedef struct {
-	uint32 num_records;
-	NTSTATUS status;
-} EVENTLOG_R_GET_NUM_RECORDS;
-
-
-/***********************************/
-
-typedef struct {
-	POLICY_HND handle;
-} EVENTLOG_Q_GET_OLDEST_ENTRY;
-
-typedef struct {
-	uint32 oldest_entry;
-	NTSTATUS status;
-} EVENTLOG_R_GET_OLDEST_ENTRY;
-
-
-/***********************************/
-
 typedef struct 
 {
 	POLICY_HND handle;
@@ -165,16 +120,4 @@ typedef struct {
 	NTSTATUS status;
 } EVENTLOG_R_READ_EVENTLOG;
 
-
-/***********************************/
-
-typedef struct {
-	POLICY_HND handle;
-	UNISTR4 backupfile;
-} EVENTLOG_Q_CLEAR_EVENTLOG;
-
-typedef struct {
-	NTSTATUS status;
-} EVENTLOG_R_CLEAR_EVENTLOG;
-
 #endif /* _RPC_EVENTLOG_H */
diff --git a/source/librpc/gen_ndr/cli_eventlog.c b/source/librpc/gen_ndr/cli_eventlog.c
index 72cd886..0084776 100644
--- a/source/librpc/gen_ndr/cli_eventlog.c
+++ b/source/librpc/gen_ndr/cli_eventlog.c
@@ -9,14 +9,14 @@
 NTSTATUS rpccli_eventlog_ClearEventLogW(struct rpc_pipe_client *cli,
 					TALLOC_CTX *mem_ctx,
 					struct policy_handle *handle,
-					struct lsa_String *unknown)
+					struct lsa_String *backupfile)
 {
 	struct eventlog_ClearEventLogW r;
 	NTSTATUS status;
 
 	/* In parameters */
 	r.in.handle = handle;
-	r.in.unknown = unknown;
+	r.in.backupfile = backupfile;
 
 	if (DEBUGLEVEL >= 10) {
 		NDR_PRINT_IN_DEBUG(eventlog_ClearEventLogW, &r);
@@ -203,12 +203,15 @@ NTSTATUS rpccli_eventlog_GetNumRecords(struct rpc_pipe_client *cli,
 }
 
 NTSTATUS rpccli_eventlog_GetOldestRecord(struct rpc_pipe_client *cli,
-					 TALLOC_CTX *mem_ctx)
+					 TALLOC_CTX *mem_ctx,
+					 struct policy_handle *handle,
+					 uint32_t *oldest_entry)
 {
 	struct eventlog_GetOldestRecord r;
 	NTSTATUS status;
 
 	/* In parameters */
+	r.in.handle = handle;
 
 	if (DEBUGLEVEL >= 10) {
 		NDR_PRINT_IN_DEBUG(eventlog_GetOldestRecord, &r);
@@ -234,6 +237,7 @@ NTSTATUS rpccli_eventlog_GetOldestRecord(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
+	*oldest_entry = *r.out.oldest_entry;
 
 	/* Return result */
 	return r.out.result;
@@ -279,8 +283,8 @@ NTSTATUS rpccli_eventlog_ChangeNotify(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_eventlog_OpenEventLogW(struct rpc_pipe_client *cli,
 				       TALLOC_CTX *mem_ctx,
 				       struct eventlog_OpenUnknown0 *unknown0,
-				       struct lsa_String logname,
-				       struct lsa_String servername,
+				       struct lsa_String *logname,
+				       struct lsa_String *servername,
 				       uint32_t unknown2,
 				       uint32_t unknown3,
 				       struct policy_handle *handle)
diff --git a/source/librpc/gen_ndr/cli_eventlog.h b/source/librpc/gen_ndr/cli_eventlog.h
index f75355c..10790a2 100644
--- a/source/librpc/gen_ndr/cli_eventlog.h
+++ b/source/librpc/gen_ndr/cli_eventlog.h
@@ -4,7 +4,7 @@
 NTSTATUS rpccli_eventlog_ClearEventLogW(struct rpc_pipe_client *cli,
 					TALLOC_CTX *mem_ctx,
 					struct policy_handle *handle,
-					struct lsa_String *unknown);
+					struct lsa_String *backupfile);
 NTSTATUS rpccli_eventlog_BackupEventLogW(struct rpc_pipe_client *cli,
 					 TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_eventlog_CloseEventLog(struct rpc_pipe_client *cli,
@@ -17,14 +17,16 @@ NTSTATUS rpccli_eventlog_GetNumRecords(struct rpc_pipe_client *cli,
 				       struct policy_handle *handle,
 				       uint32_t *number);
 NTSTATUS rpccli_eventlog_GetOldestRecord(struct rpc_pipe_client *cli,
-					 TALLOC_CTX *mem_ctx);
+					 TALLOC_CTX *mem_ctx,
+					 struct policy_handle *handle,
+					 uint32_t *oldest_entry);
 NTSTATUS rpccli_eventlog_ChangeNotify(struct rpc_pipe_client *cli,
 				      TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_eventlog_OpenEventLogW(struct rpc_pipe_client *cli,
 				       TALLOC_CTX *mem_ctx,
 				       struct eventlog_OpenUnknown0 *unknown0,
-				       struct lsa_String logname,
-				       struct lsa_String servername,
+				       struct lsa_String *logname,
+				       struct lsa_String *servername,
 				       uint32_t unknown2,
 				       uint32_t unknown3,
 				       struct policy_handle *handle);
diff --git a/source/librpc/gen_ndr/eventlog.h b/source/librpc/gen_ndr/eventlog.h
index 656dadc..0fd929d 100644
--- a/source/librpc/gen_ndr/eventlog.h
+++ b/source/librpc/gen_ndr/eventlog.h
@@ -53,7 +53,7 @@ struct eventlog_Record {
 struct eventlog_ClearEventLogW {
 	struct {
 		struct policy_handle *handle;/* [ref] */
-		struct lsa_String *unknown;/* [unique] */
+		struct lsa_String *backupfile;/* [unique] */
 	} in;
 
 	struct {
@@ -107,6 +107,11 @@ struct eventlog_GetNumRecords {
 
 struct eventlog_GetOldestRecord {
 	struct {
+		struct policy_handle *handle;/* [ref] */
+	} in;
+
+	struct {
+		uint32_t *oldest_entry;/* [ref] */
 		NTSTATUS result;
 	} out;
 
@@ -124,8 +129,8 @@ struct eventlog_ChangeNotify {
 struct eventlog_OpenEventLogW {
 	struct {
 		struct eventlog_OpenUnknown0 *unknown0;/* [unique] */
-		struct lsa_String logname;
-		struct lsa_String servername;
+		struct lsa_String *logname;/* [ref] */
+		struct lsa_String *servername;/* [ref] */
 		uint32_t unknown2;
 		uint32_t unknown3;
 	} in;
@@ -159,7 +164,7 @@ struct eventlog_ReadEventLogW {
 		struct policy_handle *handle;/* [ref] */
 		uint32_t flags;
 		uint32_t offset;
-		uint32_t number_of_bytes;
+		uint32_t number_of_bytes;/* [range(0,0x7FFFF)] */
 	} in;
 
 	struct {
diff --git a/source/librpc/gen_ndr/ndr_eventlog.c b/source/librpc/gen_ndr/ndr_eventlog.c
index 3b9a42d..442c40b 100644
--- a/source/librpc/gen_ndr/ndr_eventlog.c
+++ b/source/librpc/gen_ndr/ndr_eventlog.c
@@ -194,9 +194,9 @@ static enum ndr_err_code ndr_push_eventlog_ClearEventLogW(struct ndr_push *ndr,
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 		}
 		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.unknown));
-		if (r->in.unknown) {
-			NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.unknown));
+		NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.backupfile));
+		if (r->in.backupfile) {
+			NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.backupfile));
 		}
 	}
 	if (flags & NDR_OUT) {
@@ -207,9 +207,9 @@ static enum ndr_err_code ndr_push_eventlog_ClearEventLogW(struct ndr_push *ndr,
 
 static enum ndr_err_code ndr_pull_eventlog_ClearEventLogW(struct ndr_pull *ndr, int flags, struct eventlog_ClearEventLogW *r)
 {
-	uint32_t _ptr_unknown;
+	uint32_t _ptr_backupfile;
 	TALLOC_CTX *_mem_save_handle_0;
-	TALLOC_CTX *_mem_save_unknown_0;
+	TALLOC_CTX *_mem_save_backupfile_0;
 	if (flags & NDR_IN) {
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 			NDR_PULL_ALLOC(ndr, r->in.handle);
@@ -218,17 +218,17 @@ static enum ndr_err_code ndr_pull_eventlog_ClearEventLogW(struct ndr_pull *ndr,
 		NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown));
-		if (_ptr_unknown) {
-			NDR_PULL_ALLOC(ndr, r->in.unknown);
+		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_backupfile));
+		if (_ptr_backupfile) {
+			NDR_PULL_ALLOC(ndr, r->in.backupfile);
 		} else {
-			r->in.unknown = NULL;
+			r->in.backupfile = NULL;
 		}
-		if (r->in.unknown) {
-			_mem_save_unknown_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->in.unknown, 0);
-			NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.unknown));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown_0, 0);
+		if (r->in.backupfile) {
+			_mem_save_backupfile_0 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, r->in.backupfile, 0);
+			NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.backupfile));
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_backupfile_0, 0);
 		}
 	}
 	if (flags & NDR_OUT) {
@@ -251,10 +251,10 @@ _PUBLIC_ void ndr_print_eventlog_ClearEventLogW(struct ndr_print *ndr, const cha
 		ndr->depth++;
 		ndr_print_policy_handle(ndr, "handle", r->in.handle);
 		ndr->depth--;
-		ndr_print_ptr(ndr, "unknown", r->in.unknown);
+		ndr_print_ptr(ndr, "backupfile", r->in.backupfile);
 		ndr->depth++;
-		if (r->in.unknown) {
-			ndr_print_lsa_String(ndr, "unknown", r->in.unknown);
+		if (r->in.backupfile) {
+			ndr_print_lsa_String(ndr, "backupfile", r->in.backupfile);
 		}
 		ndr->depth--;
 		ndr->depth--;
@@ -506,8 +506,16 @@ _PUBLIC_ void ndr_print_eventlog_GetNumRecords(struct ndr_print *ndr, const char
 static enum ndr_err_code ndr_push_eventlog_GetOldestRecord(struct ndr_push *ndr, int flags, const struct eventlog_GetOldestRecord *r)
 {
 	if (flags & NDR_IN) {
+		if (r->in.handle == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
 	}
 	if (flags & NDR_OUT) {
+		if (r->out.oldest_entry == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.oldest_entry));
 		NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
 	}
 	return NDR_ERR_SUCCESS;
@@ -515,9 +523,29 @@ static enum ndr_err_code ndr_push_eventlog_GetOldestRecord(struct ndr_push *ndr,
 
 static enum ndr_err_code ndr_pull_eventlog_GetOldestRecord(struct ndr_pull *ndr, int flags, struct eventlog_GetOldestRecord *r)
 {
+	TALLOC_CTX *_mem_save_handle_0;
+	TALLOC_CTX *_mem_save_oldest_entry_0;
 	if (flags & NDR_IN) {
+		ZERO_STRUCT(r->out);
+
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->in.handle);
+		}
+		_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
+		NDR_PULL_ALLOC(ndr, r->out.oldest_entry);
+		ZERO_STRUCTP(r->out.oldest_entry);
 	}
 	if (flags & NDR_OUT) {
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->out.oldest_entry);
+		}
+		_mem_save_oldest_entry_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out.oldest_entry, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.oldest_entry));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_oldest_entry_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
 	}
 	return NDR_ERR_SUCCESS;
@@ -533,11 +561,19 @@ _PUBLIC_ void ndr_print_eventlog_GetOldestRecord(struct ndr_print *ndr, const ch
 	if (flags & NDR_IN) {
 		ndr_print_struct(ndr, "in", "eventlog_GetOldestRecord");
 		ndr->depth++;
+		ndr_print_ptr(ndr, "handle", r->in.handle);
+		ndr->depth++;
+		ndr_print_policy_handle(ndr, "handle", r->in.handle);
+		ndr->depth--;
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
 		ndr_print_struct(ndr, "out", "eventlog_GetOldestRecord");
 		ndr->depth++;
+		ndr_print_ptr(ndr, "oldest_entry", r->out.oldest_entry);
+		ndr->depth++;
+		ndr_print_uint32(ndr, "oldest_entry", *r->out.oldest_entry);
+		ndr->depth--;
 		ndr_print_NTSTATUS(ndr, "result", r->out.result);
 		ndr->depth--;
 	}
@@ -592,8 +628,14 @@ static enum ndr_err_code ndr_push_eventlog_OpenEventLogW(struct ndr_push *ndr, i
 		if (r->in.unknown0) {
 			NDR_CHECK(ndr_push_eventlog_OpenUnknown0(ndr, NDR_SCALARS, r->in.unknown0));
 		}
-		NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logname));
-		NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.servername));
+		if (r->in.logname == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logname));
+		if (r->in.servername == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.servername));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown2));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown3));
 	}
@@ -611,6 +653,8 @@ static enum ndr_err_code ndr_pull_eventlog_OpenEventLogW(struct ndr_pull *ndr, i
 {
 	uint32_t _ptr_unknown0;
 	TALLOC_CTX *_mem_save_unknown0_0;
+	TALLOC_CTX *_mem_save_logname_0;
+	TALLOC_CTX *_mem_save_servername_0;
 	TALLOC_CTX *_mem_save_handle_0;
 	if (flags & NDR_IN) {
 		ZERO_STRUCT(r->out);
@@ -627,8 +671,20 @@ static enum ndr_err_code ndr_pull_eventlog_OpenEventLogW(struct ndr_pull *ndr, i
 			NDR_CHECK(ndr_pull_eventlog_OpenUnknown0(ndr, NDR_SCALARS, r->in.unknown0));
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown0_0, 0);
 		}
-		NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logname));
-		NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.servername));
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->in.logname);
+		}
+		_mem_save_logname_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->in.logname, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logname));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logname_0, LIBNDR_FLAG_REF_ALLOC);
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->in.servername);
+		}
+		_mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->in.servername, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.servername));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown2));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown3));
 		NDR_PULL_ALLOC(ndr, r->out.handle);
@@ -663,8 +719,14 @@ _PUBLIC_ void ndr_print_eventlog_OpenEventLogW(struct ndr_print *ndr, const char
 			ndr_print_eventlog_OpenUnknown0(ndr, "unknown0", r->in.unknown0);
 		}
 		ndr->depth--;
-		ndr_print_lsa_String(ndr, "logname", &r->in.logname);
-		ndr_print_lsa_String(ndr, "servername", &r->in.servername);
+		ndr_print_ptr(ndr, "logname", r->in.logname);
+		ndr->depth++;
+		ndr_print_lsa_String(ndr, "logname", r->in.logname);
+		ndr->depth--;
+		ndr_print_ptr(ndr, "servername", r->in.servername);
+		ndr->depth++;
+		ndr_print_lsa_String(ndr, "servername", r->in.servername);
+		ndr->depth--;
 		ndr_print_uint32(ndr, "unknown2", r->in.unknown2);
 		ndr_print_uint32(ndr, "unknown3", r->in.unknown3);
 		ndr->depth--;
@@ -812,6 +874,9 @@ static enum ndr_err_code ndr_pull_eventlog_ReadEventLogW(struct ndr_pull *ndr, i
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offset));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.number_of_bytes));
+		if (r->in.number_of_bytes < 0 || r->in.number_of_bytes > 0x7FFFF) {
+			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
+		}
 		NDR_PULL_ALLOC_N(ndr, r->out.data, r->in.number_of_bytes);
 		memset(r->out.data, 0, r->in.number_of_bytes * sizeof(*r->out.data));
 		NDR_PULL_ALLOC(ndr, r->out.sent_size);
diff --git a/source/librpc/gen_ndr/srv_eventlog.c b/source/librpc/gen_ndr/srv_eventlog.c
index d9310a8..fc94993 100644
--- a/source/librpc/gen_ndr/srv_eventlog.c
+++ b/source/librpc/gen_ndr/srv_eventlog.c
@@ -418,6 +418,13 @@ static bool api_eventlog_GetOldestRecord(pipes_struct *p)
 		NDR_PRINT_IN_DEBUG(eventlog_GetOldestRecord, r);
 	}
 
+	ZERO_STRUCT(r->out);
+	r->out.oldest_entry = talloc_zero(r, uint32_t);
+	if (r->out.oldest_entry == NULL) {
+		talloc_free(r);
+		return false;
+	}
+
 	r->out.result = _eventlog_GetOldestRecord(p, r);
 
 	if (p->rng_fault_state) {
diff --git a/source/librpc/idl/eventlog.idl b/source/librpc/idl/eventlog.idl
index 3defd99..9fed2a4 100644
--- a/source/librpc/idl/eventlog.idl
+++ b/source/librpc/idl/eventlog.idl
@@ -60,7 +60,7 @@ import "lsa.idl", "security.idl";
 	/* Function: 0x00 */
 	NTSTATUS eventlog_ClearEventLogW(
 		[in] policy_handle *handle,
-		[in,unique] lsa_String *unknown
+		[in,unique] lsa_String *backupfile
 	);
 
 	/******************/
@@ -86,7 +86,10 @@ import "lsa.idl", "security.idl";
 
 	/******************/
 	/* Function: 0x05 */
-	NTSTATUS eventlog_GetOldestRecord();
+	NTSTATUS eventlog_GetOldestRecord(
+		[in] policy_handle *handle,
+		[out,ref] uint32 *oldest_entry
+	);
 
 	/******************/
 	/* Function: 0x06 */
@@ -96,8 +99,8 @@ import "lsa.idl", "security.idl";
 	/* Function: 0x07 */
 	NTSTATUS eventlog_OpenEventLogW(
 		[in,unique]	    eventlog_OpenUnknown0 *unknown0,
-		[in]	    lsa_String logname,
-		[in]	    lsa_String servername,
+		[in,ref]    lsa_String *logname,
+		[in,ref]    lsa_String *servername,
 		[in]	    uint32 unknown2,
 		[in]	    uint32 unknown3,
 		[out]   policy_handle *handle
@@ -117,10 +120,10 @@ import "lsa.idl", "security.idl";
 		[in] policy_handle *handle,
 		[in] uint32 flags,
 		[in] uint32 offset,
-		[in] uint32 number_of_bytes,
-		[out,size_is(number_of_bytes)] uint8 *data,
-		[out] uint32 *sent_size,
-		[out] uint32 *real_size
+		[in] [range(0,0x7FFFF)] uint32 number_of_bytes,
+		[out,ref,size_is(number_of_bytes)] uint8 *data,
+		[out,ref] uint32 *sent_size,
+		[out,ref] uint32 *real_size
 	);
 
 	/*****************/
diff --git a/source/rpc_parse/parse_eventlog.c b/source/rpc_parse/parse_eventlog.c
index 70226bc..2ff217e 100644
--- a/source/rpc_parse/parse_eventlog.c
+++ b/source/rpc_parse/parse_eventlog.c
@@ -25,154 +25,6 @@
 /********************************************************************
 ********************************************************************/
 
-bool prs_ev_open_unknown0( const char *desc, prs_struct *ps, int depth, EVENTLOG_OPEN_UNKNOWN0 *u )
-{


-- 
Samba Shared Repository


More information about the samba-cvs mailing list