[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