diff --git a/reactos/dll/win32/lsasrv/authpackage.c b/reactos/dll/win32/lsasrv/authpackage.c index 62199b0e9aa..04a3c32f569 100644 --- a/reactos/dll/win32/lsasrv/authpackage.c +++ b/reactos/dll/win32/lsasrv/authpackage.c @@ -231,7 +231,7 @@ LsapAddAuthPackage(IN PWSTR ValueName, TRACE("Package Name: %s\n", Package->Name->Buffer); Package->Id = *Id; - *Id++; + (*Id)++; InsertTailList(&PackageListHead, &Package->Entry); diff --git a/reactos/dll/win32/lsasrv/lsasrv.c b/reactos/dll/win32/lsasrv/lsasrv.c index 53198aa06fc..15f16ce4c75 100644 --- a/reactos/dll/win32/lsasrv/lsasrv.c +++ b/reactos/dll/win32/lsasrv/lsasrv.c @@ -15,6 +15,113 @@ WINE_DEFAULT_DEBUG_CHANNEL(lsasrv); /* FUNCTIONS ***************************************************************/ +VOID +NTAPI +LsaIFree_LSAPR_POLICY_INFORMATION(IN POLICY_INFORMATION_CLASS InformationClass, + IN PLSAPR_POLICY_INFORMATION PolicyInformation) +{ + if (PolicyInformation != NULL) + { + switch (InformationClass) + { + case PolicyAuditLogInformation: /* 1 */ + break; + + case PolicyAuditEventsInformation: /* 2 */ + if (PolicyInformation->PolicyAuditEventsInfo.EventAuditingOptions != NULL) + midl_user_free(PolicyInformation->PolicyAuditEventsInfo.EventAuditingOptions); + break; + + case PolicyPrimaryDomainInformation: /* 3 */ + if (PolicyInformation->PolicyPrimaryDomInfo.Name.Buffer != NULL) + midl_user_free(PolicyInformation->PolicyPrimaryDomInfo.Name.Buffer); + + if (PolicyInformation->PolicyPrimaryDomInfo.Sid != NULL) + midl_user_free(PolicyInformation->PolicyPrimaryDomInfo.Sid); + break; + + case PolicyPdAccountInformation: /* 4 */ + if (PolicyInformation->PolicyPdAccountInfo.Name.Buffer != NULL) + midl_user_free(PolicyInformation->PolicyPdAccountInfo.Name.Buffer); + break; + + case PolicyAccountDomainInformation: /* 5 */ + if (PolicyInformation->PolicyAccountDomainInfo.DomainName.Buffer != NULL) + midl_user_free(PolicyInformation->PolicyAccountDomainInfo.DomainName.Buffer); + + if (PolicyInformation->PolicyAccountDomainInfo.Sid != NULL) + midl_user_free(PolicyInformation->PolicyAccountDomainInfo.Sid); + break; + + case PolicyLsaServerRoleInformation: /* 6 */ + break; + + case PolicyReplicaSourceInformation: /* 7 */ + if (PolicyInformation->PolicyReplicaSourceInfo.ReplicaSource.Buffer != NULL) + midl_user_free(PolicyInformation->PolicyReplicaSourceInfo.ReplicaSource.Buffer); + + if (PolicyInformation->PolicyReplicaSourceInfo.ReplicaAccountName.Buffer != NULL) + midl_user_free(PolicyInformation->PolicyReplicaSourceInfo.ReplicaAccountName.Buffer); + break; + + case PolicyDefaultQuotaInformation: /* 8 */ + break; + + case PolicyModificationInformation: /* 9 */ + break; + + case PolicyAuditFullSetInformation: /* 10 (0xA) */ + break; + + case PolicyAuditFullQueryInformation: /* 11 (0xB) */ + break; + + case PolicyDnsDomainInformation: /* 12 (0xC) */ + if (PolicyInformation->PolicyDnsDomainInfo.Name.Buffer != NULL) + midl_user_free(PolicyInformation->PolicyDnsDomainInfo.Name.Buffer); + + if (PolicyInformation->PolicyDnsDomainInfo.DnsDomainName.Buffer != NULL) + midl_user_free(PolicyInformation->PolicyDnsDomainInfo.DnsDomainName.Buffer); + + if (PolicyInformation->PolicyDnsDomainInfo.DnsForestName.Buffer != NULL) + midl_user_free(PolicyInformation->PolicyDnsDomainInfo.DnsForestName.Buffer); + + if (PolicyInformation->PolicyDnsDomainInfo.Sid != NULL) + midl_user_free(PolicyInformation->PolicyDnsDomainInfo.Sid); + break; + + case PolicyDnsDomainInformationInt: /* 13 (0xD) */ + if (PolicyInformation->PolicyDnsDomainInfoInt.Name.Buffer != NULL) + midl_user_free(PolicyInformation->PolicyDnsDomainInfoInt.Name.Buffer); + + if (PolicyInformation->PolicyDnsDomainInfoInt.DnsDomainName.Buffer != NULL) + midl_user_free(PolicyInformation->PolicyDnsDomainInfoInt.DnsDomainName.Buffer); + + if (PolicyInformation->PolicyDnsDomainInfoInt.DnsForestName.Buffer != NULL) + midl_user_free(PolicyInformation->PolicyDnsDomainInfoInt.DnsForestName.Buffer); + + if (PolicyInformation->PolicyDnsDomainInfoInt.Sid != NULL) + midl_user_free(PolicyInformation->PolicyDnsDomainInfoInt.Sid); + break; + + case PolicyLocalAccountDomainInformation: /* 14 (0xE) */ + if (PolicyInformation->PolicyLocalAccountDomainInfo.DomainName.Buffer != NULL) + midl_user_free(PolicyInformation->PolicyLocalAccountDomainInfo.DomainName.Buffer); + + if (PolicyInformation->PolicyLocalAccountDomainInfo.Sid != NULL) + midl_user_free(PolicyInformation->PolicyLocalAccountDomainInfo.Sid); + break; + + default: + ERR("Invalid InformationClass: %lu\n", InformationClass); + break; + } + + midl_user_free(PolicyInformation); + } +} + + NTSTATUS WINAPI LsapInitLsa(VOID) { diff --git a/reactos/dll/win32/lsasrv/lsasrv.spec b/reactos/dll/win32/lsasrv/lsasrv.spec index a599b08b9cc..26bd0e7ae17 100644 --- a/reactos/dll/win32/lsasrv/lsasrv.spec +++ b/reactos/dll/win32/lsasrv/lsasrv.spec @@ -1,4 +1,3 @@ - @ stub LsaIAuditNotifyPackageLoad @ stub LsaIAuditSamEvent @ stub LsaIEnumerateSecrets @@ -6,7 +5,7 @@ @ stub LsaIFree_LSAI_SECRET_ENUM_BUFFER @ stub LsaIFree_LSAPR_ACCOUNT_ENUM_BUFFER @ stub LsaIFree_LSAPR_CR_CIPHER_VALUE - @ stub LsaIFree_LSAPR_POLICY_INFORMATION + @ stdcall LsaIFree_LSAPR_POLICY_INFORMATION(long ptr) @ stub LsaIFree_LSAPR_PRIVILEGE_ENUM_BUFFER @ stub LsaIFree_LSAPR_PRIVILEGE_SET @ stub LsaIFree_LSAPR_REFERENCED_DOMAIN_LIST diff --git a/reactos/dll/win32/lsasrv/policy.c b/reactos/dll/win32/lsasrv/policy.c index af8d1ce0b86..394a8c668ad 100644 --- a/reactos/dll/win32/lsasrv/policy.c +++ b/reactos/dll/win32/lsasrv/policy.c @@ -824,8 +824,7 @@ LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject, AuditData, AttributeSize); - if (AuditData != NULL) - RtlFreeHeap(RtlGetProcessHeap(), 0, AuditData); + RtlFreeHeap(RtlGetProcessHeap(), 0, AuditData); return Status; }