Author: ekohl
Date: Tue Sep 10 21:20:22 2013
New Revision: 60013
URL:
http://svn.reactos.org/svn/reactos?rev=60013&view=rev
Log:
[LSASRV]
- Allocate buffers for account and domain names in the well-known sid list instead of
using pointers to strings.
- Add a string load routine and convert all hard-coded SID names to resources.
A german translation will follow soon.
Added:
trunk/reactos/dll/win32/lsasrv/lang/ (with props)
trunk/reactos/dll/win32/lsasrv/lang/en-US.rc (with props)
trunk/reactos/dll/win32/lsasrv/resources.h (with props)
trunk/reactos/dll/win32/lsasrv/utils.c (with props)
Modified:
trunk/reactos/dll/win32/lsasrv/CMakeLists.txt
trunk/reactos/dll/win32/lsasrv/lookup.c
trunk/reactos/dll/win32/lsasrv/lsasrv.h
trunk/reactos/dll/win32/lsasrv/lsasrv.rc
Modified: trunk/reactos/dll/win32/lsasrv/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/lsasrv/CMakeList…
==============================================================================
--- trunk/reactos/dll/win32/lsasrv/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/lsasrv/CMakeLists.txt [iso-8859-1] Tue Sep 10 21:20:22 2013
@@ -18,6 +18,7 @@
privileges.c
registry.c
security.c
+ utils.c
lsasrv.rc
${CMAKE_CURRENT_BINARY_DIR}/lsasrv_stubs.c
${CMAKE_CURRENT_BINARY_DIR}/lsasrv.def
Propchange: trunk/reactos/dll/win32/lsasrv/lang/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Tue Sep 10 21:20:22 2013
@@ -0,0 +1,2 @@
+([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))?
+(\d+)
Propchange: trunk/reactos/dll/win32/lsasrv/lang/
------------------------------------------------------------------------------
bugtraq:message = See issue #%BUGID% for more details.
Propchange: trunk/reactos/dll/win32/lsasrv/lang/
------------------------------------------------------------------------------
bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/reactos/dll/win32/lsasrv/lang/
------------------------------------------------------------------------------
tsvn:logminsize = 10
Added: trunk/reactos/dll/win32/lsasrv/lang/en-US.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/lsasrv/lang/en-U…
==============================================================================
--- trunk/reactos/dll/win32/lsasrv/lang/en-US.rc (added)
+++ trunk/reactos/dll/win32/lsasrv/lang/en-US.rc [iso-8859-1] Tue Sep 10 21:20:22 2013
@@ -0,0 +1,44 @@
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+
+STRINGTABLE
+BEGIN
+ IDS_NT_AUTHORITY "NT AUTHORITY"
+ IDS_NULL_RID "NULL SID"
+ IDS_WORLD_RID "Everyone"
+ IDS_LOCAL_RID "LOCAL"
+ IDS_CREATOR_OWNER_RID "CREATOR OWNER"
+ IDS_CREATOR_GROUP_RID "CREATOR GROUP"
+ IDS_CREATOR_OWNER_SERVER_RID "CREATOR OWNER SERVER"
+ IDS_CREATOR_GROUP_SERVER_RID "CREATOR GROUP SERVER"
+ IDS_DIALUP_RID "DIALUP"
+ IDS_NETWORK_RID "NETWORK"
+ IDS_BATCH_RID "BATCH"
+ IDS_INTERACTIVE_RID "INTERACTIVE"
+ IDS_SERVICE_RID "SERVICE"
+ IDS_ANONYMOUS_LOGON_RID "ANONYMOUS LOGON"
+ IDS_PROXY_RID "PROXY"
+ IDS_ENTERPRISE_CONTROLLERS_RID "ENTERPRISE DOMAIN CONTROLLERS"
+ IDS_PRINCIPAL_SELF_RID "SELF"
+ IDS_AUTHENTICATED_USER_RID "Authenticated Users"
+ IDS_RESTRICTED_CODE_RID "RESTRICTED"
+ IDS_TERMINAL_SERVER_RID "TERMINAL SERVER USER"
+ IDS_REMOTE_LOGON_RID "REMOTE INTERACTIVE LOGON"
+ IDS_THIS_ORGANIZATION_RID "This Organization"
+ IDS_LOCAL_SYSTEM_RID "SYSTEM"
+ IDS_LOCAL_SERVICE_RID "LOCAL SERVICE"
+ IDS_NETWORK_SERVICE_RID "NETWORK SERVICE"
+ IDS_BUILTIN_DOMAIN_RID "BUILTIN"
+ IDS_ALIAS_RID_ADMINS "Administrators"
+ IDS_ALIAS_RID_USERS "Users"
+ IDS_ALIAS_RID_GUESTS "Guests"
+ IDS_ALIAS_RID_POWER_USERS "Power Users"
+ IDS_ALIAS_RID_ACCOUNT_OPS "Account Operators"
+ IDS_ALIAS_RID_SYSTEM_OPS "Server Operators"
+ IDS_ALIAS_RID_PRINT_OPS "Print Operators"
+ IDS_ALIAS_RID_BACKUP_OPS "Backup Operators"
+ IDS_ALIAS_RID_REPLICATOR "Replicators"
+ IDS_ALIAS_RID_RAS_SERVERS "RAS and IAS Servers"
+ IDS_ALIAS_RID_PREW2KCOMPACCESS "Pre-Windows 2000 Compatible
Access"
+ IDS_ALIAS_RID_REMOTE_DESKTOP_USERS "Remote Desktop Users"
+ IDS_ALIAS_RID_NETWORK_CONFIGURATION_OPS "Network Configuration Operators"
+END
Propchange: trunk/reactos/dll/win32/lsasrv/lang/en-US.rc
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/dll/win32/lsasrv/lookup.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/lsasrv/lookup.c?…
==============================================================================
--- trunk/reactos/dll/win32/lsasrv/lookup.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/lsasrv/lookup.c [iso-8859-1] Tue Sep 10 21:20:22 2013
@@ -235,11 +235,38 @@
*p = SubAuthorities[i];
}
- RtlInitUnicodeString(&SidEntry->AccountName,
- AccountName);
-
- RtlInitUnicodeString(&SidEntry->DomainName,
- DomainName);
+// RtlInitUnicodeString(&SidEntry->AccountName,
+// AccountName);
+ SidEntry->AccountName.Length = wcslen(AccountName) * sizeof(WCHAR);
+ SidEntry->AccountName.MaximumLength = SidEntry->AccountName.Length +
sizeof(WCHAR);
+ SidEntry->AccountName.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), 0,
+
SidEntry->AccountName.MaximumLength);
+ if (SidEntry->AccountName.Buffer == NULL)
+ {
+ RtlFreeHeap(RtlGetProcessHeap(), 0, SidEntry->Sid);
+ RtlFreeHeap(RtlGetProcessHeap(), 0, SidEntry);
+ return FALSE;
+ }
+
+ wcscpy(SidEntry->AccountName.Buffer,
+ AccountName);
+
+// RtlInitUnicodeString(&SidEntry->DomainName,
+// DomainName);
+ SidEntry->DomainName.Length = wcslen(DomainName) * sizeof(WCHAR);
+ SidEntry->DomainName.MaximumLength = SidEntry->DomainName.Length +
sizeof(WCHAR);
+ SidEntry->DomainName.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), 0,
+
SidEntry->DomainName.MaximumLength);
+ if (SidEntry->DomainName.Buffer == NULL)
+ {
+ RtlFreeHeap(RtlGetProcessHeap(), 0, SidEntry->AccountName.Buffer);
+ RtlFreeHeap(RtlGetProcessHeap(), 0, SidEntry->Sid);
+ RtlFreeHeap(RtlGetProcessHeap(), 0, SidEntry);
+ return FALSE;
+ }
+
+ wcscpy(SidEntry->DomainName.Buffer,
+ DomainName);
SidEntry->Use = Use;
@@ -253,223 +280,278 @@
NTSTATUS
LsapInitSids(VOID)
{
+ WCHAR szAccountName[80];
+ WCHAR szDomainName[80];
ULONG SubAuthorities[8];
+ HINSTANCE hInstance;
InitializeListHead(&WellKnownSidListHead);
+ hInstance = GetModuleHandleW(L"lsasrv.dll");
+
/* NT Authority */
+
+ LsapLoadString(hInstance, IDS_NT_AUTHORITY, szAccountName, 80);
+ LsapLoadString(hInstance, IDS_NT_AUTHORITY, szDomainName, 80);
LsapCreateSid(&NtAuthority,
0,
NULL,
- L"NT AUTHORITY",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeDomain);
/* Null Sid */
+ LsapLoadString(hInstance, IDS_NULL_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_NULL_RID;
LsapCreateSid(&NullSidAuthority,
1,
SubAuthorities,
- L"NULL SID",
+ szAccountName,
L"",
SidTypeWellKnownGroup);
/* World Sid */
+ LsapLoadString(hInstance, IDS_WORLD_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_WORLD_RID;
LsapCreateSid(&WorldSidAuthority,
1,
SubAuthorities,
- L"Everyone",
+ szAccountName,
L"",
SidTypeWellKnownGroup);
/* Local Sid */
+ LsapLoadString(hInstance, IDS_LOCAL_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_LOCAL_RID;
LsapCreateSid(&LocalSidAuthority,
1,
SubAuthorities,
- L"LOCAL",
+ szAccountName,
L"",
SidTypeWellKnownGroup);
/* Creator Owner Sid */
+ LsapLoadString(hInstance, IDS_CREATOR_OWNER_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_CREATOR_OWNER_RID;
LsapCreateSid(&CreatorSidAuthority,
1,
SubAuthorities,
- L"CREATOR OWNER",
+ szAccountName,
L"",
SidTypeWellKnownGroup);
/* Creator Group Sid */
+ LsapLoadString(hInstance, IDS_CREATOR_GROUP_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_CREATOR_GROUP_RID;
LsapCreateSid(&CreatorSidAuthority,
1,
SubAuthorities,
- L"CREATOR GROUP",
+ szAccountName,
L"",
SidTypeWellKnownGroup);
/* Creator Owner Server Sid */
+ LsapLoadString(hInstance, IDS_CREATOR_OWNER_SERVER_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_CREATOR_OWNER_SERVER_RID;
LsapCreateSid(&CreatorSidAuthority,
1,
SubAuthorities,
- L"CREATOR OWNER SERVER",
+ szAccountName,
L"",
SidTypeWellKnownGroup);
/* Creator Group Server Sid */
+ LsapLoadString(hInstance, IDS_CREATOR_GROUP_SERVER_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_CREATOR_GROUP_SERVER_RID;
LsapCreateSid(&CreatorSidAuthority,
1,
SubAuthorities,
- L"CREATOR GROUP SERVER",
+ szAccountName,
L"",
SidTypeWellKnownGroup);
/* Dialup Sid */
+ LsapLoadString(hInstance, IDS_DIALUP_RID, szAccountName, 80);
+ LsapLoadString(hInstance, IDS_NT_AUTHORITY, szDomainName, 80);
+
SubAuthorities[0] = SECURITY_DIALUP_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"DIALUP",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Network Sid */
+ LsapLoadString(hInstance, IDS_DIALUP_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_NETWORK_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"NETWORK",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Batch Sid*/
+ LsapLoadString(hInstance, IDS_BATCH_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_BATCH_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"BATCH",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Interactive Sid */
+ LsapLoadString(hInstance, IDS_INTERACTIVE_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_INTERACTIVE_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"INTERACTIVE",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Service Sid */
+ LsapLoadString(hInstance, IDS_SERVICE_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_SERVICE_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"SERVICE",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Anonymous Logon Sid */
+ LsapLoadString(hInstance, IDS_ANONYMOUS_LOGON_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_ANONYMOUS_LOGON_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"ANONYMOUS LOGON",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Proxy Sid */
+ LsapLoadString(hInstance, IDS_PROXY_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_PROXY_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"PROXY",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Enterprise Controllers Sid */
+ LsapLoadString(hInstance, IDS_ENTERPRISE_CONTROLLERS_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_ENTERPRISE_CONTROLLERS_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"ENTERPRISE DOMAIN CONTROLLERS",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Principal Self Sid */
+ LsapLoadString(hInstance, IDS_PRINCIPAL_SELF_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_PRINCIPAL_SELF_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"SELF",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Authenticated Users Sid */
+ LsapLoadString(hInstance, IDS_AUTHENTICATED_USER_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_AUTHENTICATED_USER_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"Authenticated Users",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Restricted Code Sid */
+ LsapLoadString(hInstance, IDS_RESTRICTED_CODE_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_RESTRICTED_CODE_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"RESTRICTED",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Terminal Server Sid */
+ LsapLoadString(hInstance, IDS_TERMINAL_SERVER_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_TERMINAL_SERVER_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"TERMINAL SERVER USER",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Remote Logon Sid */
+ LsapLoadString(hInstance, IDS_REMOTE_LOGON_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_REMOTE_LOGON_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"REMOTE INTERACTIVE LOGON",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* This Organization Sid */
+ LsapLoadString(hInstance, IDS_THIS_ORGANIZATION_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_THIS_ORGANIZATION_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"This Organization",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Local System Sid */
+ LsapLoadString(hInstance, IDS_LOCAL_SYSTEM_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_LOCAL_SYSTEM_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"SYSTEM",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
/* Local Service Sid */
+ LsapLoadString(hInstance, IDS_LOCAL_SERVICE_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_LOCAL_SERVICE_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"LOCAL SERVICE",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
LsapCreateSid(&NtAuthority,
@@ -480,12 +562,14 @@
SidTypeWellKnownGroup);
/* Network Service Sid */
+ LsapLoadString(hInstance, IDS_NETWORK_SERVICE_RID, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_NETWORK_SERVICE_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"NETWORK SERVICE",
- L"NT AUTHORITY",
+ szAccountName,
+ szDomainName,
SidTypeWellKnownGroup);
LsapCreateSid(&NtAuthority,
@@ -496,144 +580,171 @@
SidTypeWellKnownGroup);
/* Builtin Domain Sid */
+ LsapLoadString(hInstance, IDS_BUILTIN_DOMAIN_RID, szAccountName, 80);
+ LsapLoadString(hInstance, IDS_BUILTIN_DOMAIN_RID, szDomainName, 80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
LsapCreateSid(&NtAuthority,
1,
SubAuthorities,
- L"BUILTIN",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeDomain);
/* Administrators Alias Sid */
+ LsapLoadString(hInstance, IDS_ALIAS_RID_ADMINS, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
SubAuthorities[1] = DOMAIN_ALIAS_RID_ADMINS;
LsapCreateSid(&NtAuthority,
2,
SubAuthorities,
- L"Administrators",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeAlias);
/* Users Alias Sid */
+ LsapLoadString(hInstance, IDS_ALIAS_RID_USERS, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
SubAuthorities[1] = DOMAIN_ALIAS_RID_USERS;
LsapCreateSid(&NtAuthority,
2,
SubAuthorities,
- L"Users",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeAlias);
/* Guests Alias Sid */
+ LsapLoadString(hInstance, IDS_ALIAS_RID_GUESTS, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
SubAuthorities[1] = DOMAIN_ALIAS_RID_GUESTS;
LsapCreateSid(&NtAuthority,
2,
SubAuthorities,
- L"Guests",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeAlias);
/* Power User Alias Sid */
+ LsapLoadString(hInstance, IDS_ALIAS_RID_POWER_USERS, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
SubAuthorities[1] = DOMAIN_ALIAS_RID_POWER_USERS;
LsapCreateSid(&NtAuthority,
2,
SubAuthorities,
- L"Power User",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeAlias);
/* Account Operators Alias Sid */
+ LsapLoadString(hInstance, IDS_ALIAS_RID_ACCOUNT_OPS, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
SubAuthorities[1] = DOMAIN_ALIAS_RID_ACCOUNT_OPS;
LsapCreateSid(&NtAuthority,
2,
SubAuthorities,
- L"Account Operators",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeAlias);
/* System Operators Alias Sid */
+ LsapLoadString(hInstance, IDS_ALIAS_RID_SYSTEM_OPS, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
SubAuthorities[1] = DOMAIN_ALIAS_RID_SYSTEM_OPS;
LsapCreateSid(&NtAuthority,
2,
SubAuthorities,
- L"Server Operators",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeAlias);
/* Print Operators Alias Sid */
+ LsapLoadString(hInstance, IDS_ALIAS_RID_PRINT_OPS, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
SubAuthorities[1] = DOMAIN_ALIAS_RID_PRINT_OPS;
LsapCreateSid(&NtAuthority,
2,
SubAuthorities,
- L"Print Operators",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeAlias);
/* Backup Operators Alias Sid */
+ LsapLoadString(hInstance, IDS_ALIAS_RID_BACKUP_OPS, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
SubAuthorities[1] = DOMAIN_ALIAS_RID_BACKUP_OPS;
LsapCreateSid(&NtAuthority,
2,
SubAuthorities,
- L"Backup Operators",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeAlias);
/* Replicators Alias Sid */
+ LsapLoadString(hInstance, IDS_ALIAS_RID_REPLICATOR, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
SubAuthorities[1] = DOMAIN_ALIAS_RID_REPLICATOR;
LsapCreateSid(&NtAuthority,
2,
SubAuthorities,
- L"Replicators",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeAlias);
-#if 0
/* RAS Servers Alias Sid */
+ LsapLoadString(hInstance, IDS_ALIAS_RID_RAS_SERVERS, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
SubAuthorities[1] = DOMAIN_ALIAS_RID_RAS_SERVERS;
LsapCreateSid(&NtAuthority,
2,
SubAuthorities,
- L"Backup Operators",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeAlias);
-#endif
/* Pre-Windows 2000 Compatible Access Alias Sid */
+ LsapLoadString(hInstance, IDS_ALIAS_RID_PREW2KCOMPACCESS, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
SubAuthorities[1] = DOMAIN_ALIAS_RID_PREW2KCOMPACCESS;
LsapCreateSid(&NtAuthority,
2,
SubAuthorities,
- L"Pre-Windows 2000 Compatible Access",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeAlias);
/* Remote Desktop Users Alias Sid */
+ LsapLoadString(hInstance, IDS_ALIAS_RID_REMOTE_DESKTOP_USERS, szAccountName, 80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
SubAuthorities[1] = DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS;
LsapCreateSid(&NtAuthority,
2,
SubAuthorities,
- L"Remote Desktop Users",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeAlias);
/* Network Configuration Operators Alias Sid */
+ LsapLoadString(hInstance, IDS_ALIAS_RID_NETWORK_CONFIGURATION_OPS, szAccountName,
80);
+
SubAuthorities[0] = SECURITY_BUILTIN_DOMAIN_RID;
SubAuthorities[1] = DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS;
LsapCreateSid(&NtAuthority,
2,
SubAuthorities,
- L"Network Configuration Operators",
- L"BUILTIN",
+ szAccountName,
+ szDomainName,
SidTypeAlias);
/* FIXME: Add more well known sids */
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 Sep 10 21:20:22 2013
@@ -14,6 +14,7 @@
#include <windef.h>
#include <winbase.h>
#include <winreg.h>
+#include <winuser.h>
#define NTOS_MODE_USER
#include <ndk/cmfuncs.h>
#include <ndk/kefuncs.h>
@@ -39,6 +40,7 @@
#include <wine/debug.h>
+#include "resources.h"
typedef enum _LSA_DB_OBJECT_TYPE
{
@@ -381,4 +383,11 @@
LsapCreateSecretSd(PSECURITY_DESCRIPTOR *SecretSd,
PULONG SecretSdSize);
+/* utils.c */
+INT
+LsapLoadString(HINSTANCE hInstance,
+ UINT uId,
+ LPWSTR lpBuffer,
+ INT nBufferMax);
+
/* EOF */
Modified: trunk/reactos/dll/win32/lsasrv/lsasrv.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/lsasrv/lsasrv.rc…
==============================================================================
--- trunk/reactos/dll/win32/lsasrv/lsasrv.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/lsasrv/lsasrv.rc [iso-8859-1] Tue Sep 10 21:20:22 2013
@@ -1,5 +1,24 @@
+#include <windows.h>
+#include "resources.h"
+
#define REACTOS_VERSION_DLL
#define REACTOS_STR_FILE_DESCRIPTION "LSA server DLL\0"
#define REACTOS_STR_INTERNAL_NAME "lsasrv\0"
#define REACTOS_STR_ORIGINAL_FILENAME "lsasrv.dll\0"
+#define REACTOS_FILEVERSION 5,1,2600,0
+#define REACTOS_STR_FILE_VERSION "5.1.2600\0"
#include <reactos/version.rc>
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+/*
+ * Everything specific to any language goes in one of the specific
+ * files. Note that you can and may override resources which also have
+ * a neutral version. This is to get localized bitmaps for example.
+ */
+
+/* UTF-8 */
+#pragma code_page(65001)
+#ifdef LANGUAGE_EN_US
+ #include "lang/en-US.rc"
+#endif
Added: trunk/reactos/dll/win32/lsasrv/resources.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/lsasrv/resources…
==============================================================================
--- trunk/reactos/dll/win32/lsasrv/resources.h (added)
+++ trunk/reactos/dll/win32/lsasrv/resources.h [iso-8859-1] Tue Sep 10 21:20:22 2013
@@ -0,0 +1,52 @@
+/*
+ * PROJECT: Local Security Authority Server DLL
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: dll/win32/lsasrv/resource.h
+ * PURPOSE: Resource IDs
+ * COPYRIGHT: Copyright 2013 Eric Kohl
+ */
+
+#pragma once
+
+#define IDS_NT_AUTHORITY 100
+
+#define IDS_NULL_RID 110
+#define IDS_WORLD_RID 111
+#define IDS_LOCAL_RID 112
+#define IDS_CREATOR_OWNER_RID 113
+#define IDS_CREATOR_GROUP_RID 114
+#define IDS_CREATOR_OWNER_SERVER_RID 115
+#define IDS_CREATOR_GROUP_SERVER_RID 116
+#define IDS_DIALUP_RID 117
+#define IDS_NETWORK_RID 118
+#define IDS_BATCH_RID 119
+#define IDS_INTERACTIVE_RID 120
+#define IDS_SERVICE_RID 121
+#define IDS_ANONYMOUS_LOGON_RID 122
+#define IDS_PROXY_RID 123
+#define IDS_ENTERPRISE_CONTROLLERS_RID 124
+#define IDS_PRINCIPAL_SELF_RID 125
+#define IDS_AUTHENTICATED_USER_RID 126
+#define IDS_RESTRICTED_CODE_RID 127
+#define IDS_TERMINAL_SERVER_RID 128
+#define IDS_REMOTE_LOGON_RID 129
+#define IDS_THIS_ORGANIZATION_RID 130
+#define IDS_LOCAL_SYSTEM_RID 131
+#define IDS_LOCAL_SERVICE_RID 132
+#define IDS_NETWORK_SERVICE_RID 133
+#define IDS_BUILTIN_DOMAIN_RID 134
+#define IDS_ALIAS_RID_ADMINS 135
+#define IDS_ALIAS_RID_USERS 136
+#define IDS_ALIAS_RID_GUESTS 137
+#define IDS_ALIAS_RID_POWER_USERS 138
+#define IDS_ALIAS_RID_ACCOUNT_OPS 139
+#define IDS_ALIAS_RID_SYSTEM_OPS 140
+#define IDS_ALIAS_RID_PRINT_OPS 141
+#define IDS_ALIAS_RID_BACKUP_OPS 142
+#define IDS_ALIAS_RID_REPLICATOR 143
+#define IDS_ALIAS_RID_RAS_SERVERS 144
+#define IDS_ALIAS_RID_PREW2KCOMPACCESS 145
+#define IDS_ALIAS_RID_REMOTE_DESKTOP_USERS 146
+#define IDS_ALIAS_RID_NETWORK_CONFIGURATION_OPS 147
+
+/* EOF */
Propchange: trunk/reactos/dll/win32/lsasrv/resources.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/dll/win32/lsasrv/utils.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/lsasrv/utils.c?r…
==============================================================================
--- trunk/reactos/dll/win32/lsasrv/utils.c (added)
+++ trunk/reactos/dll/win32/lsasrv/utils.c [iso-8859-1] Tue Sep 10 21:20:22 2013
@@ -0,0 +1,68 @@
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: Security Account Manager (SAM) Server
+ * FILE: reactos/dll/win32/lsasrv/utils.c
+ * PURPOSE: Utility functions
+ *
+ * PROGRAMMERS: Eric Kohl
+ */
+
+/* INCLUDES ****************************************************************/
+
+#include "lsasrv.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(lsasrv);
+
+
+/* GLOBALS *****************************************************************/
+
+
+/* FUNCTIONS ***************************************************************/
+
+INT
+LsapLoadString(HINSTANCE hInstance,
+ UINT uId,
+ LPWSTR lpBuffer,
+ INT nBufferMax)
+{
+ HGLOBAL hmem;
+ HRSRC hrsrc;
+ WCHAR *p;
+ int string_num;
+ int i;
+
+ /* Use loword (incremented by 1) as resourceid */
+ hrsrc = FindResourceW(hInstance,
+ MAKEINTRESOURCEW((LOWORD(uId) >> 4) + 1),
+ (LPWSTR)RT_STRING);
+ if (!hrsrc)
+ return 0;
+
+ hmem = LoadResource(hInstance, hrsrc);
+ if (!hmem)
+ return 0;
+
+ p = LockResource(hmem);
+ string_num = uId & 0x000f;
+ for (i = 0; i < string_num; i++)
+ p += *p + 1;
+
+ i = min(nBufferMax - 1, *p);
+ if (i > 0)
+ {
+ memcpy(lpBuffer, p + 1, i * sizeof(WCHAR));
+ lpBuffer[i] = 0;
+ }
+ else
+ {
+ if (nBufferMax > 1)
+ {
+ lpBuffer[0] = 0;
+ return 0;
+ }
+ }
+
+ return i;
+}
+
+/* EOF */
Propchange: trunk/reactos/dll/win32/lsasrv/utils.c
------------------------------------------------------------------------------
svn:eol-style = native