[SCM] Samba Shared Repository - branch master updated -
03f3c65ce439983c0941eba11d69b75c5fa39311
Günther Deschner
gd at samba.org
Mon Jan 12 17:05:21 GMT 2009
The branch, master has been updated
via 03f3c65ce439983c0941eba11d69b75c5fa39311 (commit)
via 4561721cc3b4e45d953e0cdb7cca422fe0fa3b0d (commit)
via 6b80e9be6425e342b73859dd68655444dc49c56c (commit)
via 9df76c4efb8a35f2c466e514521a1e7e3dde2ce9 (commit)
from 7d9fd64f38aa5821b38c1223cf87979fc87bfb71 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 03f3c65ce439983c0941eba11d69b75c5fa39311
Author: Günther Deschner <gd at samba.org>
Date: Mon Jan 12 18:00:33 2009 +0100
s3: re-run make samba3-idl.
Guenther
commit 4561721cc3b4e45d953e0cdb7cca422fe0fa3b0d
Author: Günther Deschner <gd at samba.org>
Date: Mon Jan 12 16:16:24 2009 +0100
s3-rpcclient: some cleanup for eventlog client.
Guenther
commit 6b80e9be6425e342b73859dd68655444dc49c56c
Author: Günther Deschner <gd at samba.org>
Date: Mon Jan 12 13:45:38 2009 +0100
eventlog: some fixes for eventlog_Record struct.
* make reserved field always have value 0x654c664C ("eLfL").
* add missing sid entry
* add padding and 2nd size counter.
* use time_t in eventlog_Record.
Guenther
commit 9df76c4efb8a35f2c466e514521a1e7e3dde2ce9
Author: Günther Deschner <gd at samba.org>
Date: Mon Jan 12 13:45:04 2009 +0100
eventlog: make out pointer a ref pointer in eventlog_GetNumRecords.
Guenther
-----------------------------------------------------------------------
Summary of changes:
librpc/gen_ndr/eventlog.h | 11 +++++---
librpc/gen_ndr/ndr_eventlog.c | 51 +++++++++++++++++++++++++++++--------
librpc/idl/eventlog.idl | 13 ++++++---
source3/rpcclient/cmd_eventlog.c | 35 +++++++++++++++++++------
4 files changed, 81 insertions(+), 29 deletions(-)
Changeset truncated at 500 lines:
diff --git a/librpc/gen_ndr/eventlog.h b/librpc/gen_ndr/eventlog.h
index 76b9e86..805364b 100644
--- a/librpc/gen_ndr/eventlog.h
+++ b/librpc/gen_ndr/eventlog.h
@@ -28,10 +28,10 @@ struct eventlog_OpenUnknown0 {
struct eventlog_Record {
uint32_t size;
- uint32_t reserved;
+ uint32_t reserved;/* [value(0x654c664C)] */
uint32_t record_number;
- uint32_t time_generated;
- uint32_t time_written;
+ time_t time_generated;
+ time_t time_written;
uint32_t event_id;
uint16_t event_type;
uint16_t num_of_strings;
@@ -39,14 +39,17 @@ struct eventlog_Record {
uint16_t reserved_flags;
uint32_t closing_record_number;
uint32_t stringoffset;
- uint32_t sid_length;
+ uint32_t sid_size;/* [value(ndr_size_dom_sid0(&sid,ndr->flags))] */
uint32_t sid_offset;
uint32_t data_length;
uint32_t data_offset;
const char * source_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
const char * computer_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
+ struct dom_sid0 sid;/* [subcontext_size(sid_size),subcontext(0)] */
const char * *strings;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
const char * raw_data;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
+ DATA_BLOB _padding;/* [flag(LIBNDR_FLAG_ALIGN4)] */
+ uint32_t size2;/* [value(size)] */
}/* [public] */;
diff --git a/librpc/gen_ndr/ndr_eventlog.c b/librpc/gen_ndr/ndr_eventlog.c
index 6116434..5d1bda5 100644
--- a/librpc/gen_ndr/ndr_eventlog.c
+++ b/librpc/gen_ndr/ndr_eventlog.c
@@ -69,10 +69,10 @@ _PUBLIC_ enum ndr_err_code ndr_push_eventlog_Record(struct ndr_push *ndr, int nd
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_push_align(ndr, 4));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0x654c664C));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->record_number));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time_generated));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time_written));
+ NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->time_generated));
+ NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->time_written));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->event_id));
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->event_type));
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_of_strings));
@@ -80,7 +80,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_eventlog_Record(struct ndr_push *ndr, int nd
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->reserved_flags));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->closing_record_number));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->stringoffset));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sid_length));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_dom_sid0(&r->sid, ndr->flags)));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sid_offset));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->data_length));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->data_offset));
@@ -97,6 +97,12 @@ _PUBLIC_ enum ndr_err_code ndr_push_eventlog_Record(struct ndr_push *ndr, int nd
ndr->flags = _flags_save_string;
}
{
+ struct ndr_push *_ndr_sid;
+ NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_sid, 0, ndr_size_dom_sid0(&r->sid, ndr->flags)));
+ NDR_CHECK(ndr_push_dom_sid0(_ndr_sid, NDR_SCALARS|NDR_BUFFERS, &r->sid));
+ NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_sid, 0, ndr_size_dom_sid0(&r->sid, ndr->flags)));
+ }
+ {
uint32_t _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
for (cntr_strings_0 = 0; cntr_strings_0 < r->num_of_strings; cntr_strings_0++) {
@@ -110,6 +116,13 @@ _PUBLIC_ enum ndr_err_code ndr_push_eventlog_Record(struct ndr_push *ndr, int nd
NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->raw_data));
ndr->flags = _flags_save_string;
}
+ {
+ uint32_t _flags_save_DATA_BLOB = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
+ NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->_padding));
+ ndr->flags = _flags_save_DATA_BLOB;
+ }
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
}
if (ndr_flags & NDR_BUFFERS) {
}
@@ -125,8 +138,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_eventlog_Record(struct ndr_pull *ndr, int nd
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->record_number));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time_generated));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time_written));
+ NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->time_generated));
+ NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->time_written));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->event_id));
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->event_type));
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_of_strings));
@@ -134,7 +147,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_eventlog_Record(struct ndr_pull *ndr, int nd
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->reserved_flags));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->closing_record_number));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->stringoffset));
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sid_length));
+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sid_size));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sid_offset));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->data_length));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->data_offset));
@@ -151,6 +164,12 @@ _PUBLIC_ enum ndr_err_code ndr_pull_eventlog_Record(struct ndr_pull *ndr, int nd
ndr->flags = _flags_save_string;
}
{
+ struct ndr_pull *_ndr_sid;
+ NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_sid, 0, r->sid_size));
+ NDR_CHECK(ndr_pull_dom_sid0(_ndr_sid, NDR_SCALARS|NDR_BUFFERS, &r->sid));
+ NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_sid, 0, r->sid_size));
+ }
+ {
uint32_t _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
NDR_PULL_ALLOC_N(ndr, r->strings, r->num_of_strings);
@@ -168,6 +187,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_eventlog_Record(struct ndr_pull *ndr, int nd
NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->raw_data));
ndr->flags = _flags_save_string;
}
+ {
+ uint32_t _flags_save_DATA_BLOB = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
+ NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->_padding));
+ ndr->flags = _flags_save_DATA_BLOB;
+ }
+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size2));
}
if (ndr_flags & NDR_BUFFERS) {
}
@@ -180,10 +206,10 @@ _PUBLIC_ void ndr_print_eventlog_Record(struct ndr_print *ndr, const char *name,
ndr_print_struct(ndr, name, "eventlog_Record");
ndr->depth++;
ndr_print_uint32(ndr, "size", r->size);
- ndr_print_uint32(ndr, "reserved", r->reserved);
+ ndr_print_uint32(ndr, "reserved", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0x654c664C:r->reserved);
ndr_print_uint32(ndr, "record_number", r->record_number);
- ndr_print_uint32(ndr, "time_generated", r->time_generated);
- ndr_print_uint32(ndr, "time_written", r->time_written);
+ ndr_print_time_t(ndr, "time_generated", r->time_generated);
+ ndr_print_time_t(ndr, "time_written", r->time_written);
ndr_print_uint32(ndr, "event_id", r->event_id);
ndr_print_uint16(ndr, "event_type", r->event_type);
ndr_print_uint16(ndr, "num_of_strings", r->num_of_strings);
@@ -191,12 +217,13 @@ _PUBLIC_ void ndr_print_eventlog_Record(struct ndr_print *ndr, const char *name,
ndr_print_uint16(ndr, "reserved_flags", r->reserved_flags);
ndr_print_uint32(ndr, "closing_record_number", r->closing_record_number);
ndr_print_uint32(ndr, "stringoffset", r->stringoffset);
- ndr_print_uint32(ndr, "sid_length", r->sid_length);
+ ndr_print_uint32(ndr, "sid_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_dom_sid0(&r->sid, ndr->flags):r->sid_size);
ndr_print_uint32(ndr, "sid_offset", r->sid_offset);
ndr_print_uint32(ndr, "data_length", r->data_length);
ndr_print_uint32(ndr, "data_offset", r->data_offset);
ndr_print_string(ndr, "source_name", r->source_name);
ndr_print_string(ndr, "computer_name", r->computer_name);
+ ndr_print_dom_sid0(ndr, "sid", &r->sid);
ndr->print(ndr, "%s: ARRAY(%d)", "strings", (int)r->num_of_strings);
ndr->depth++;
for (cntr_strings_0=0;cntr_strings_0<r->num_of_strings;cntr_strings_0++) {
@@ -208,6 +235,8 @@ _PUBLIC_ void ndr_print_eventlog_Record(struct ndr_print *ndr, const char *name,
}
ndr->depth--;
ndr_print_string(ndr, "raw_data", r->raw_data);
+ ndr_print_DATA_BLOB(ndr, "_padding", r->_padding);
+ ndr_print_uint32(ndr, "size2", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->size:r->size2);
ndr->depth--;
}
diff --git a/librpc/idl/eventlog.idl b/librpc/idl/eventlog.idl
index bab4cb9..584d671 100644
--- a/librpc/idl/eventlog.idl
+++ b/librpc/idl/eventlog.idl
@@ -34,10 +34,10 @@ import "lsa.idl", "security.idl";
typedef [public] struct {
uint32 size;
- uint32 reserved;
+ [value(0x654c664C)] uint32 reserved; /* "eLfL" */
uint32 record_number;
- uint32 time_generated;
- uint32 time_written;
+ time_t time_generated;
+ time_t time_written;
uint32 event_id;
uint16 event_type;
uint16 num_of_strings;
@@ -45,14 +45,17 @@ import "lsa.idl", "security.idl";
uint16 reserved_flags;
uint32 closing_record_number;
uint32 stringoffset;
- uint32 sid_length;
+ [value(ndr_size_dom_sid0(&sid, ndr->flags))] uint32 sid_size;
uint32 sid_offset;
uint32 data_length;
uint32 data_offset;
nstring source_name;
nstring computer_name;
+ [subcontext(0),subcontext_size(sid_size)] dom_sid0 sid;
nstring strings[num_of_strings];
astring raw_data;
+ [flag(NDR_ALIGN4)] DATA_BLOB _padding;
+ [value(size)] uint32 size2;
} eventlog_Record;
/******************/
@@ -80,7 +83,7 @@ import "lsa.idl", "security.idl";
/* Function: 0x04 */
NTSTATUS eventlog_GetNumRecords(
[in] policy_handle *handle,
- [out] uint32 *number
+ [out,ref] uint32 *number
);
/******************/
diff --git a/source3/rpcclient/cmd_eventlog.c b/source3/rpcclient/cmd_eventlog.c
index a6254da..2dcb72a 100644
--- a/source3/rpcclient/cmd_eventlog.c
+++ b/source3/rpcclient/cmd_eventlog.c
@@ -66,11 +66,15 @@ static NTSTATUS cmd_eventlog_readlog(struct rpc_pipe_client *cli,
uint32_t sent_size = 0;
uint32_t real_size = 0;
- if (argc != 2) {
- printf("Usage: %s logname\n", argv[0]);
+ if (argc < 2 || argc > 4) {
+ printf("Usage: %s logname [offset]\n", argv[0]);
return NT_STATUS_OK;
}
+ if (argc >= 3) {
+ offset = atoi(argv[2]);
+ }
+
status = get_eventlog_handle(cli, mem_ctx, argv[1], &handle);
if (!NT_STATUS_IS_OK(status)) {
return status;
@@ -85,14 +89,17 @@ static NTSTATUS cmd_eventlog_readlog(struct rpc_pipe_client *cli,
data,
&sent_size,
&real_size);
- if (NT_STATUS_EQUAL(status, NT_STATUS_BUFFER_TOO_SMALL)) {
+ if (NT_STATUS_EQUAL(status, NT_STATUS_BUFFER_TOO_SMALL) &&
+ real_size > 0 ) {
number_of_bytes = real_size;
data = talloc_array(mem_ctx, uint8_t, real_size);
continue;
}
+ number_of_bytes = 0;
+
if (!NT_STATUS_IS_OK(status)) {
- return status;
+ goto done;
}
{
@@ -106,7 +113,8 @@ static NTSTATUS cmd_eventlog_readlog(struct rpc_pipe_client *cli,
&rec,
(ndr_pull_flags_fn_t)ndr_pull_eventlog_Record);
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
- return ndr_map_error2ntstatus(ndr_err);
+ status = ndr_map_error2ntstatus(ndr_err);
+ goto done;
}
NDR_PRINT_DEBUG(eventlog_Record, &rec);
@@ -115,6 +123,9 @@ static NTSTATUS cmd_eventlog_readlog(struct rpc_pipe_client *cli,
offset++;
}
+ done:
+ rpccli_eventlog_CloseEventLog(cli, mem_ctx, &handle);
+
return status;
}
@@ -141,12 +152,15 @@ static NTSTATUS cmd_eventlog_numrecords(struct rpc_pipe_client *cli,
&handle,
&number);
if (!NT_STATUS_IS_OK(status)) {
- return status;
+ goto done;
}
printf("number of records: %d\n", number);
- return NT_STATUS_OK;
+ done:
+ rpccli_eventlog_CloseEventLog(cli, mem_ctx, &handle);
+
+ return status;
}
static NTSTATUS cmd_eventlog_oldestrecord(struct rpc_pipe_client *cli,
@@ -172,12 +186,15 @@ static NTSTATUS cmd_eventlog_oldestrecord(struct rpc_pipe_client *cli,
&handle,
&oldest_entry);
if (!NT_STATUS_IS_OK(status)) {
- return status;
+ goto done;
}
printf("oldest entry: %d\n", oldest_entry);
- return NT_STATUS_OK;
+ done:
+ rpccli_eventlog_CloseEventLog(cli, mem_ctx, &handle);
+
+ return status;
}
struct cmd_set eventlog_commands[] = {
--
Samba Shared Repository
More information about the samba-cvs
mailing list