mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 09:16:17 +00:00
[SAMSRV]
Store an objects relative id in the database object. This will later be used to protect pre-defined objects from being deleted. svn path=/trunk/; revision=58038
This commit is contained in:
parent
dfa3ce1995
commit
e002133064
3 changed files with 17 additions and 0 deletions
|
@ -97,6 +97,7 @@ NTSTATUS
|
||||||
SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject,
|
SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject,
|
||||||
IN LPWSTR ContainerName,
|
IN LPWSTR ContainerName,
|
||||||
IN LPWSTR ObjectName,
|
IN LPWSTR ObjectName,
|
||||||
|
IN ULONG RelativeId,
|
||||||
IN SAM_DB_OBJECT_TYPE ObjectType,
|
IN SAM_DB_OBJECT_TYPE ObjectType,
|
||||||
IN ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess,
|
||||||
OUT PSAM_DB_OBJECT *DbObject)
|
OUT PSAM_DB_OBJECT *DbObject)
|
||||||
|
@ -240,6 +241,7 @@ SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject,
|
||||||
NewObject->Access = DesiredAccess;
|
NewObject->Access = DesiredAccess;
|
||||||
NewObject->KeyHandle = ObjectKeyHandle;
|
NewObject->KeyHandle = ObjectKeyHandle;
|
||||||
NewObject->MembersKeyHandle = MembersKeyHandle;
|
NewObject->MembersKeyHandle = MembersKeyHandle;
|
||||||
|
NewObject->RelativeId = RelativeId;
|
||||||
NewObject->ParentObject = ParentObject;
|
NewObject->ParentObject = ParentObject;
|
||||||
|
|
||||||
if (ParentObject != NULL)
|
if (ParentObject != NULL)
|
||||||
|
@ -255,6 +257,7 @@ NTSTATUS
|
||||||
SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject,
|
SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject,
|
||||||
IN LPWSTR ContainerName,
|
IN LPWSTR ContainerName,
|
||||||
IN LPWSTR ObjectName,
|
IN LPWSTR ObjectName,
|
||||||
|
IN ULONG RelativeId,
|
||||||
IN SAM_DB_OBJECT_TYPE ObjectType,
|
IN SAM_DB_OBJECT_TYPE ObjectType,
|
||||||
IN ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess,
|
||||||
OUT PSAM_DB_OBJECT *DbObject)
|
OUT PSAM_DB_OBJECT *DbObject)
|
||||||
|
@ -390,6 +393,7 @@ SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject,
|
||||||
NewObject->Access = DesiredAccess;
|
NewObject->Access = DesiredAccess;
|
||||||
NewObject->KeyHandle = ObjectKeyHandle;
|
NewObject->KeyHandle = ObjectKeyHandle;
|
||||||
NewObject->MembersKeyHandle = MembersKeyHandle;
|
NewObject->MembersKeyHandle = MembersKeyHandle;
|
||||||
|
NewObject->RelativeId = RelativeId;
|
||||||
NewObject->ParentObject = ParentObject;
|
NewObject->ParentObject = ParentObject;
|
||||||
|
|
||||||
if (ParentObject != NULL)
|
if (ParentObject != NULL)
|
||||||
|
|
|
@ -88,6 +88,7 @@ SamrConnect(IN PSAMPR_SERVER_NAME ServerName,
|
||||||
Status = SampOpenDbObject(NULL,
|
Status = SampOpenDbObject(NULL,
|
||||||
NULL,
|
NULL,
|
||||||
L"SAM",
|
L"SAM",
|
||||||
|
0,
|
||||||
SamDbServerObject,
|
SamDbServerObject,
|
||||||
DesiredAccess,
|
DesiredAccess,
|
||||||
&ServerObject);
|
&ServerObject);
|
||||||
|
@ -509,6 +510,7 @@ SamrOpenDomain(IN SAMPR_HANDLE ServerHandle,
|
||||||
Status = SampOpenDbObject(ServerObject,
|
Status = SampOpenDbObject(ServerObject,
|
||||||
L"Domains",
|
L"Domains",
|
||||||
L"Builtin",
|
L"Builtin",
|
||||||
|
0,
|
||||||
SamDbDomainObject,
|
SamDbDomainObject,
|
||||||
DesiredAccess,
|
DesiredAccess,
|
||||||
&DomainObject);
|
&DomainObject);
|
||||||
|
@ -524,6 +526,7 @@ SamrOpenDomain(IN SAMPR_HANDLE ServerHandle,
|
||||||
Status = SampOpenDbObject(ServerObject,
|
Status = SampOpenDbObject(ServerObject,
|
||||||
L"Domains",
|
L"Domains",
|
||||||
L"Account",
|
L"Account",
|
||||||
|
0,
|
||||||
SamDbDomainObject,
|
SamDbDomainObject,
|
||||||
DesiredAccess,
|
DesiredAccess,
|
||||||
&DomainObject);
|
&DomainObject);
|
||||||
|
@ -1709,6 +1712,7 @@ SamrCreateGroupInDomain(IN SAMPR_HANDLE DomainHandle,
|
||||||
Status = SampCreateDbObject(DomainObject,
|
Status = SampCreateDbObject(DomainObject,
|
||||||
L"Groups",
|
L"Groups",
|
||||||
szRid,
|
szRid,
|
||||||
|
ulRid,
|
||||||
SamDbGroupObject,
|
SamDbGroupObject,
|
||||||
DesiredAccess,
|
DesiredAccess,
|
||||||
&GroupObject);
|
&GroupObject);
|
||||||
|
@ -2074,6 +2078,7 @@ SamrCreateUserInDomain(IN SAMPR_HANDLE DomainHandle,
|
||||||
Status = SampCreateDbObject(DomainObject,
|
Status = SampCreateDbObject(DomainObject,
|
||||||
L"Users",
|
L"Users",
|
||||||
szRid,
|
szRid,
|
||||||
|
ulRid,
|
||||||
SamDbUserObject,
|
SamDbUserObject,
|
||||||
DesiredAccess,
|
DesiredAccess,
|
||||||
&UserObject);
|
&UserObject);
|
||||||
|
@ -2527,6 +2532,7 @@ SamrCreateAliasInDomain(IN SAMPR_HANDLE DomainHandle,
|
||||||
Status = SampCreateDbObject(DomainObject,
|
Status = SampCreateDbObject(DomainObject,
|
||||||
L"Aliases",
|
L"Aliases",
|
||||||
szRid,
|
szRid,
|
||||||
|
ulRid,
|
||||||
SamDbAliasObject,
|
SamDbAliasObject,
|
||||||
DesiredAccess,
|
DesiredAccess,
|
||||||
&AliasObject);
|
&AliasObject);
|
||||||
|
@ -3464,6 +3470,7 @@ SamrOpenGroup(IN SAMPR_HANDLE DomainHandle,
|
||||||
Status = SampOpenDbObject(DomainObject,
|
Status = SampOpenDbObject(DomainObject,
|
||||||
L"Groups",
|
L"Groups",
|
||||||
szRid,
|
szRid,
|
||||||
|
GroupId,
|
||||||
SamDbGroupObject,
|
SamDbGroupObject,
|
||||||
DesiredAccess,
|
DesiredAccess,
|
||||||
&GroupObject);
|
&GroupObject);
|
||||||
|
@ -3911,6 +3918,7 @@ SamrOpenAlias(IN SAMPR_HANDLE DomainHandle,
|
||||||
Status = SampOpenDbObject(DomainObject,
|
Status = SampOpenDbObject(DomainObject,
|
||||||
L"Aliases",
|
L"Aliases",
|
||||||
szRid,
|
szRid,
|
||||||
|
AliasId,
|
||||||
SamDbAliasObject,
|
SamDbAliasObject,
|
||||||
DesiredAccess,
|
DesiredAccess,
|
||||||
&AliasObject);
|
&AliasObject);
|
||||||
|
@ -4575,6 +4583,7 @@ SamrOpenUser(IN SAMPR_HANDLE DomainHandle,
|
||||||
Status = SampOpenDbObject(DomainObject,
|
Status = SampOpenDbObject(DomainObject,
|
||||||
L"Users",
|
L"Users",
|
||||||
szRid,
|
szRid,
|
||||||
|
UserId,
|
||||||
SamDbUserObject,
|
SamDbUserObject,
|
||||||
DesiredAccess,
|
DesiredAccess,
|
||||||
&UserObject);
|
&UserObject);
|
||||||
|
@ -6335,6 +6344,7 @@ SamrCreateUser2InDomain(IN SAMPR_HANDLE DomainHandle,
|
||||||
Status = SampCreateDbObject(DomainObject,
|
Status = SampCreateDbObject(DomainObject,
|
||||||
L"Users",
|
L"Users",
|
||||||
szRid,
|
szRid,
|
||||||
|
ulRid,
|
||||||
SamDbUserObject,
|
SamDbUserObject,
|
||||||
DesiredAccess,
|
DesiredAccess,
|
||||||
&UserObject);
|
&UserObject);
|
||||||
|
|
|
@ -46,6 +46,7 @@ typedef struct _SAM_DB_OBJECT
|
||||||
LPWSTR Name;
|
LPWSTR Name;
|
||||||
HANDLE KeyHandle;
|
HANDLE KeyHandle;
|
||||||
HANDLE MembersKeyHandle; // only used by Aliases and Groups
|
HANDLE MembersKeyHandle; // only used by Aliases and Groups
|
||||||
|
ULONG RelativeId;
|
||||||
struct _SAM_DB_OBJECT *ParentObject;
|
struct _SAM_DB_OBJECT *ParentObject;
|
||||||
} SAM_DB_OBJECT, *PSAM_DB_OBJECT;
|
} SAM_DB_OBJECT, *PSAM_DB_OBJECT;
|
||||||
|
|
||||||
|
@ -117,6 +118,7 @@ NTSTATUS
|
||||||
SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject,
|
SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject,
|
||||||
IN LPWSTR ContainerName,
|
IN LPWSTR ContainerName,
|
||||||
IN LPWSTR ObjectName,
|
IN LPWSTR ObjectName,
|
||||||
|
IN ULONG RelativeId,
|
||||||
IN SAM_DB_OBJECT_TYPE ObjectType,
|
IN SAM_DB_OBJECT_TYPE ObjectType,
|
||||||
IN ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess,
|
||||||
OUT PSAM_DB_OBJECT *DbObject);
|
OUT PSAM_DB_OBJECT *DbObject);
|
||||||
|
@ -125,6 +127,7 @@ NTSTATUS
|
||||||
SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject,
|
SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject,
|
||||||
IN LPWSTR ContainerName,
|
IN LPWSTR ContainerName,
|
||||||
IN LPWSTR ObjectName,
|
IN LPWSTR ObjectName,
|
||||||
|
IN ULONG RelativeId,
|
||||||
IN SAM_DB_OBJECT_TYPE ObjectType,
|
IN SAM_DB_OBJECT_TYPE ObjectType,
|
||||||
IN ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess,
|
||||||
OUT PSAM_DB_OBJECT *DbObject);
|
OUT PSAM_DB_OBJECT *DbObject);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue