The branch, master has been updated
       via  65200328eea3ab2179796ecf88a7ef276f8e2c9c (commit)
       via  df5e231a6fad8c913881432294432e8feef6ea9f (commit)
      from  9b3cce096ceca8b7d72456cbc6f0a725ad55d46c (commit)

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


- Log -----------------------------------------------------------------
commit 65200328eea3ab2179796ecf88a7ef276f8e2c9c
Author: Günther Deschner <[email protected]>
Date:   Wed Feb 4 18:31:04 2009 +0100

    s3-eventlog: add evlog_tdb_entry_to_evt_entry.
    
    Guenther

commit df5e231a6fad8c913881432294432e8feef6ea9f
Author: Günther Deschner <[email protected]>
Date:   Thu Jan 29 15:11:39 2009 +0100

    s3-eventlog: add evlog_evt_entry_to_tdb_entry.
    
    Guenther

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

Summary of changes:
 source3/include/proto.h               |    6 ++
 source3/rpc_server/srv_eventlog_lib.c |  126 +++++++++++++++++++++++++++++++++
 2 files changed, 132 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/proto.h b/source3/include/proto.h
index 9f0caa2..3ae2448 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -6271,6 +6271,12 @@ NTSTATUS evlog_push_record_tdb(TALLOC_CTX *mem_ctx,
                               TDB_CONTEXT *tdb,
                               struct eventlog_Record_tdb *r,
                               uint32_t *record_number);
+NTSTATUS evlog_evt_entry_to_tdb_entry(TALLOC_CTX *mem_ctx,
+                                     const struct EVENTLOGRECORD *e,
+                                     struct eventlog_Record_tdb *t);
+NTSTATUS evlog_tdb_entry_to_evt_entry(TALLOC_CTX *mem_ctx,
+                                     const struct eventlog_Record_tdb *t,
+                                     struct EVENTLOGRECORD *e);
 
 /* The following definitions come from rpc_server/srv_eventlog_nt.c  */
 
diff --git a/source3/rpc_server/srv_eventlog_lib.c 
b/source3/rpc_server/srv_eventlog_lib.c
index 85200d5..fdd3db9 100644
--- a/source3/rpc_server/srv_eventlog_lib.c
+++ b/source3/rpc_server/srv_eventlog_lib.c
@@ -904,3 +904,129 @@ NTSTATUS evlog_push_record_tdb(TALLOC_CTX *mem_ctx,
 
        return NT_STATUS_OK;
 }
+
+/********************************************************************
+ ********************************************************************/
+
+NTSTATUS evlog_evt_entry_to_tdb_entry(TALLOC_CTX *mem_ctx,
+                                     const struct EVENTLOGRECORD *e,
+                                     struct eventlog_Record_tdb *t)
+{
+       uint32_t i;
+
+       ZERO_STRUCTP(t);
+
+       t->size                         = e->Length;
+       t->reserved                     = e->Reserved;
+       t->record_number                = e->RecordNumber;
+       t->time_generated               = e->TimeGenerated;
+       t->time_written                 = e->TimeWritten;
+       t->event_id                     = e->EventID;
+       t->event_type                   = e->EventType;
+       t->num_of_strings               = e->NumStrings;
+       t->event_category               = e->EventCategory;
+       t->reserved_flags               = e->ReservedFlags;
+       t->closing_record_number        = e->ClosingRecordNumber;
+
+       t->stringoffset                 = e->StringOffset;
+       t->sid_length                   = e->UserSidLength;
+       t->sid_offset                   = e->UserSidOffset;
+       t->data_length                  = e->DataLength;
+       t->data_offset                  = e->DataOffset;
+
+       t->source_name_len              = 2 * strlen_m_term(e->SourceName);
+       t->source_name                  = talloc_strdup(mem_ctx, e->SourceName);
+       NT_STATUS_HAVE_NO_MEMORY(t->source_name);
+
+       t->computer_name_len            = 2 * strlen_m_term(e->Computername);
+       t->computer_name                = talloc_strdup(mem_ctx, 
e->Computername);
+       NT_STATUS_HAVE_NO_MEMORY(t->computer_name);
+
+       /* t->sid_padding; */
+       if (e->UserSidLength > 0) {
+               const char *sid_str = NULL;
+               smb_ucs2_t *dummy = NULL;
+               sid_str = sid_string_talloc(mem_ctx, &e->UserSid);
+               t->sid_length = rpcstr_push_talloc(mem_ctx, &dummy, sid_str);
+               if (t->sid_length == -1) {
+                       return NT_STATUS_NO_MEMORY;
+               }
+               t->sid = data_blob_talloc(mem_ctx, (uint8_t *)dummy, 
t->sid_length);
+               NT_STATUS_HAVE_NO_MEMORY(t->sid.data);
+       }
+
+       t->strings                      = talloc_array(mem_ctx, const char *, 
e->NumStrings);
+       for (i=0; i < e->NumStrings; i++) {
+               t->strings[i]           = talloc_strdup(t->strings, 
e->Strings[i]);
+               NT_STATUS_HAVE_NO_MEMORY(t->strings[i]);
+       }
+
+       t->strings_len                  = 2 * ndr_size_string_array(t->strings, 
t->num_of_strings, LIBNDR_FLAG_STR_NULLTERM);
+       t->data                         = data_blob_talloc(mem_ctx, e->Data, 
e->DataLength);
+       /* t->padding                   = r->Pad; */
+
+       return NT_STATUS_OK;
+}
+
+/********************************************************************
+ ********************************************************************/
+
+NTSTATUS evlog_tdb_entry_to_evt_entry(TALLOC_CTX *mem_ctx,
+                                     const struct eventlog_Record_tdb *t,
+                                     struct EVENTLOGRECORD *e)
+{
+       uint32_t i;
+
+       ZERO_STRUCTP(e);
+
+       e->Length               = t->size;
+       e->Reserved             = t->reserved;
+       e->RecordNumber         = t->record_number;
+       e->TimeGenerated        = t->time_generated;
+       e->TimeWritten          = t->time_written;
+       e->EventID              = t->event_id;
+       e->EventType            = t->event_type;
+       e->NumStrings           = t->num_of_strings;
+       e->EventCategory        = t->event_category;
+       e->ReservedFlags        = t->reserved_flags;
+       e->ClosingRecordNumber  = t->closing_record_number;
+
+       e->StringOffset         = t->stringoffset;
+       e->UserSidLength        = t->sid_length;
+       e->UserSidOffset        = t->sid_offset;
+       e->DataLength           = t->data_length;
+       e->DataOffset           = t->data_offset;
+
+       e->SourceName           = talloc_strdup(mem_ctx, t->source_name);
+       NT_STATUS_HAVE_NO_MEMORY(e->SourceName);
+
+       e->Computername         = talloc_strdup(mem_ctx, t->computer_name);
+       NT_STATUS_HAVE_NO_MEMORY(e->Computername);
+
+       if (t->sid_length > 0) {
+               const char *sid_str = NULL;
+               size_t len;
+               if (!convert_string_talloc(mem_ctx, CH_UTF16, CH_UNIX,
+                                          t->sid.data, t->sid.length,
+                                          &sid_str, &len, false)) {
+                       return NT_STATUS_INVALID_SID;
+               }
+               if (len > 0) {
+                       e->UserSid = *string_sid_talloc(mem_ctx, sid_str);
+               }
+       }
+
+       e->Strings              = talloc_array(mem_ctx, const char *, 
t->num_of_strings);
+       for (i=0; i < t->num_of_strings; i++) {
+               e->Strings[i] = talloc_strdup(e->Strings, t->strings[i]);
+               NT_STATUS_HAVE_NO_MEMORY(e->Strings[i]);
+       }
+
+       e->Data                 = (uint8_t *)talloc_memdup(mem_ctx, 
t->data.data, t->data_length);
+       e->Pad                  = talloc_strdup(mem_ctx, "");
+       NT_STATUS_HAVE_NO_MEMORY(e->Pad);
+
+       e->Length2              = t->size;
+
+       return NT_STATUS_OK;
+}


-- 
Samba Shared Repository

Reply via email to