Author: tkreuzer
Date: Tue Jan 14 20:24:43 2014
New Revision: 61626
URL: http://svn.reactos.org/svn/reactos?rev=61626&view=rev
Log:
[LSASRV]
Make the LSAP_POLICY_AUDIT_EVENTS_DATA structure compatible to the one used in Windows, so that the registry data is compatible between Windows and ReactOS lsasrv. Windows does not actually use dynamically sized structures, but always stores a full structure and the AuditEventsCount is AFTER the AuditEvents array, so that it is in fact pretty pointless. But that's how it works.
Modified:
trunk/reactos/dll/win32/lsasrv/database.c
trunk/reactos/dll/win32/lsasrv/lsasrv.h
Modified: trunk/reactos/dll/win32/lsasrv/database.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/lsasrv/database.…
==============================================================================
--- trunk/reactos/dll/win32/lsasrv/database.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/lsasrv/database.c [iso-8859-1] Tue Jan 14 20:24:43 2014
@@ -241,8 +241,6 @@
PSID AccountDomainSid = NULL;
PSECURITY_DESCRIPTOR PolicySd = NULL;
ULONG PolicySdSize = 0;
- ULONG AuditEventsCount;
- ULONG AuditEventsSize;
ULONG i;
NTSTATUS Status;
@@ -263,17 +261,15 @@
AuditLogInfo.NextAuditRecordId = 0; // DWORD
/* Initialize the Audit Events attribute */
- AuditEventsCount = AuditCategoryAccountLogon - AuditCategorySystem + 1;
- AuditEventsSize = sizeof(LSAP_POLICY_AUDIT_EVENTS_DATA) + AuditEventsCount * sizeof(DWORD);
AuditEventsInfo = RtlAllocateHeap(RtlGetProcessHeap(),
HEAP_ZERO_MEMORY,
- AuditEventsSize);
+ sizeof(LSAP_POLICY_AUDIT_EVENTS_DATA));
if (AuditEventsInfo == NULL)
return STATUS_INSUFFICIENT_RESOURCES;
AuditEventsInfo->AuditingMode = FALSE;
- AuditEventsInfo->MaximumAuditEventCount = AuditEventsCount;
- for (i = 0; i < AuditEventsCount; i++)
+ AuditEventsInfo->MaximumAuditEventCount = POLICY_AUDIT_EVENT_TYPE_COUNT;
+ for (i = 0; i < POLICY_AUDIT_EVENT_TYPE_COUNT; i++)
AuditEventsInfo->AuditEvents[i] = 0;
/* Initialize the DNS Domain GUID attribute */
@@ -351,7 +347,7 @@
LsapSetObjectAttribute(PolicyObject,
L"PolAdtEv",
AuditEventsInfo,
- AuditEventsSize);
+ sizeof(LSAP_POLICY_AUDIT_EVENTS_DATA));
/* Set the DNS Domain Name attribute */
LsapSetObjectAttribute(PolicyObject,
@@ -984,7 +980,7 @@
NULL);
if (!NT_SUCCESS(Status))
{
- ERR("NtCreateKey failed for '%S' with status 0x%lx\n",
+ ERR("NtCreateKey failed for '%S' with status 0x%lx\n",
AttributeName, Status);
return Status;
}
@@ -998,7 +994,7 @@
if (!NT_SUCCESS(Status))
{
- ERR("RtlpNtSetValueKey failed for '%S' with status 0x%lx\n",
+ ERR("RtlpNtSetValueKey failed for '%S' with status 0x%lx\n",
AttributeName, Status);
}
Modified: trunk/reactos/dll/win32/lsasrv/lsasrv.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/lsasrv/lsasrv.h?…
==============================================================================
--- trunk/reactos/dll/win32/lsasrv/lsasrv.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/lsasrv/lsasrv.h [iso-8859-1] Tue Jan 14 20:24:43 2014
@@ -65,12 +65,12 @@
#define LSAP_DB_SIGNATURE 0x12345678
-
+#define POLICY_AUDIT_EVENT_TYPE_COUNT (AuditCategoryAccountLogon - AuditCategorySystem + 1)
typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
{
BOOLEAN AuditingMode;
+ DWORD AuditEvents[POLICY_AUDIT_EVENT_TYPE_COUNT];
DWORD MaximumAuditEventCount;
- DWORD AuditEvents[0];
} LSAP_POLICY_AUDIT_EVENTS_DATA, *PLSAP_POLICY_AUDIT_EVENTS_DATA;
typedef struct _LSAP_LOGON_CONTEXT