/* Just let the object manager handle this */
Status = ObOpenObjectByName(ObjectAttributes,
CmpKeyObjectType,
- ExGetPreviousMode(),
+ PreviousMode,
NULL,
DesiredAccess,
&ParseContext,
Status = ObReferenceObjectByHandle(KeyHandle,
KEY_ENUMERATE_SUB_KEYS,
CmpKeyObjectType,
- ExGetPreviousMode(),
+ PreviousMode,
(PVOID*)&KeyObject,
NULL);
if (!NT_SUCCESS(Status)) return Status;
Status = ObReferenceObjectByHandle(KeyHandle,
KEY_QUERY_VALUE,
CmpKeyObjectType,
- ExGetPreviousMode(),
+ PreviousMode,
(PVOID*)&KeyObject,
NULL);
if (!NT_SUCCESS(Status)) return Status;
Status = ObReferenceObjectByHandle(KeyHandle,
0,
CmpKeyObjectType,
- ExGetPreviousMode(),
+ PreviousMode,
(PVOID*)&KeyObject,
&HandleInfo);
if (NT_SUCCESS(Status))
Status = ObReferenceObjectByHandle(KeyHandle,
KEY_QUERY_VALUE,
CmpKeyObjectType,
- ExGetPreviousMode(),
+ PreviousMode,
(PVOID*)&KeyObject,
NULL);
}
Status = ObReferenceObjectByHandle(KeyHandle,
KEY_QUERY_VALUE,
CmpKeyObjectType,
- ExGetPreviousMode(),
+ PreviousMode,
(PVOID*)&KeyObject,
NULL);
if (!NT_SUCCESS(Status)) return Status;
Status = ObReferenceObjectByHandle(KeyHandle,
KEY_SET_VALUE,
CmpKeyObjectType,
- ExGetPreviousMode(),
+ PreviousMode,
(PVOID*)&KeyObject,
NULL);
if (!NT_SUCCESS(Status))
KEY_SET_VALUE,
CmpKeyObjectType,
PreviousMode,
- (PVOID *)&KeyObject,
+ (PVOID*)&KeyObject,
NULL);
if (!NT_SUCCESS(Status)) return Status;
/* Validate privilege */
if (!SeSinglePrivilegeCheck(SeRestorePrivilege, PreviousMode))
{
- /* Fail */
DPRINT1("Restore Privilege missing!\n");
return STATUS_PRIVILEGE_NOT_HELD;
}
0,
CmpKeyObjectType,
PreviousMode,
- (PVOID *)&KeyBody,
+ (PVOID*)&KeyBody,
NULL);
}
/* Get the processor mode */
PreviousMode = KeGetPreviousMode();
+ /* Check for user-mode caller */
if (PreviousMode != KernelMode)
{
/* Prepare to probe parameters */
KEY_READ,
CmpKeyObjectType,
PreviousMode,
- (PVOID *)&KeyBody,
+ (PVOID*)&KeyBody,
NULL);
/* Close the handle */
return STATUS_INVALID_PARAMETER;
}
- /* Check for the SeBackupPrivilege */
+ /* Validate privilege */
if (!SeSinglePrivilegeCheck(SeBackupPrivilege, PreviousMode))
{
return STATUS_PRIVILEGE_NOT_HELD;
PreviousMode = ExGetPreviousMode();
- /* Check for the SeBackupPrivilege */
+ /* Validate privilege */
if (!SeSinglePrivilegeCheck(SeBackupPrivilege, PreviousMode))
{
return STATUS_PRIVILEGE_NOT_HELD;
/* Validate privilege */
if (!SeSinglePrivilegeCheck(SeRestorePrivilege, PreviousMode))
{
- /* Fail */
DPRINT1("Restore Privilege missing!\n");
return STATUS_PRIVILEGE_NOT_HELD;
}
goto Quickie;
}
- /* Check if it's a readonly key */
+ /* Check if it's a read-only key */
if (KeyBody->KeyControlBlock->ExtFlags & CM_KCB_READ_ONLY_KEY)
{
/* Return appropriate status */