[KMTESTS] Remove "EnablePrivilege*" helpers + Fix typo

Their functionality is already ensured by RtlAdjustPrivilege().
This commit is contained in:
Hermès Bélusca-Maïto 2024-09-06 16:14:41 +02:00
parent cf2cbe6ff6
commit 6ede6ac246
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0
3 changed files with 11 additions and 75 deletions

View file

@ -186,7 +186,7 @@ DWORD KmtSendBufferToDriver(IN DWORD ControlCode, IN OUT PVOID Buffer OPTIONAL,
DWORD KmtFltCreateService(_In_z_ PCWSTR ServiceName, _In_z_ PCWSTR DisplayName, _Out_ SC_HANDLE *ServiceHandle);
DWORD KmtFltDeleteService(_In_opt_z_ PCWSTR ServiceName, _Inout_ SC_HANDLE *ServiceHandle);
DWORD KmtFltAddAltitude(_In_z_ LPWSTR Altitude);
DWORD KmtFltLoadDriver(_In_ BOOLEAN EnableDriverLoadPrivlege, _In_ BOOLEAN RestartIfRunning, _In_ BOOLEAN ConnectComms, _Out_ HANDLE *hPort);
DWORD KmtFltLoadDriver(_In_ BOOLEAN EnableDriverLoadPrivilege, _In_ BOOLEAN RestartIfRunning, _In_ BOOLEAN ConnectComms, _Out_ HANDLE *hPort);
DWORD KmtFltUnloadDriver(_In_ HANDLE *hPort, _In_ BOOLEAN DisonnectComms);
DWORD KmtFltConnectComms(_Out_ HANDLE *hPort);
DWORD KmtFltDisconnectComms(_In_ HANDLE hPort);

View file

@ -11,6 +11,7 @@
#include "kmtest.h"
#include <kmt_public.h>
#include <ndk/setypes.h>
#include <assert.h>
#include <debug.h>
@ -25,10 +26,6 @@ KmtpCreateService(
IN DWORD ServiceType,
OUT SC_HANDLE *ServiceHandle);
DWORD EnablePrivilegeInCurrentProcess(
_In_z_ LPWSTR lpPrivName,
_In_ BOOL bEnable);
// move to a shared location
typedef struct _KMTFLT_MESSAGE_HEADER
{
@ -110,7 +107,7 @@ KmtFltDeleteService(
*/
DWORD
KmtFltLoadDriver(
_In_ BOOLEAN EnableDriverLoadPrivlege,
_In_ BOOLEAN EnableDriverLoadPrivilege,
_In_ BOOLEAN RestartIfRunning,
_In_ BOOLEAN ConnectComms,
_Out_ HANDLE *hPort
@ -118,13 +115,16 @@ KmtFltLoadDriver(
{
DWORD Error;
if (EnableDriverLoadPrivlege)
if (EnableDriverLoadPrivilege)
{
Error = EnablePrivilegeInCurrentProcess(SE_LOAD_DRIVER_NAME , TRUE);
BOOLEAN WasEnabled;
Error = RtlNtStatusToDosError(RtlAdjustPrivilege(
SE_LOAD_DRIVER_PRIVILEGE,
TRUE,
FALSE, // Enable in current process.
&WasEnabled));
if (Error)
{
return Error;
}
}
Error = KmtFltLoad(TestServiceName);
@ -141,14 +141,10 @@ KmtFltLoadDriver(
}
if (Error)
{
return Error;
}
if (ConnectComms)
{
Error = KmtFltConnectComms(hPort);
}
return Error;
}
@ -524,63 +520,3 @@ Quit:
return Error;
}
/*
* Private functions, not meant for use in kmtests
*/
DWORD EnablePrivilege(
_In_ HANDLE hToken,
_In_z_ LPWSTR lpPrivName,
_In_ BOOL bEnable)
{
TOKEN_PRIVILEGES TokenPrivileges;
LUID luid;
BOOL bSuccess;
DWORD dwError = ERROR_SUCCESS;
/* Get the luid for this privilege */
if (!LookupPrivilegeValueW(NULL, lpPrivName, &luid))
return GetLastError();
/* Setup the struct with the priv info */
TokenPrivileges.PrivilegeCount = 1;
TokenPrivileges.Privileges[0].Luid = luid;
TokenPrivileges.Privileges[0].Attributes = bEnable ? SE_PRIVILEGE_ENABLED : 0;
/* Enable the privilege info in the token */
bSuccess = AdjustTokenPrivileges(hToken,
FALSE,
&TokenPrivileges,
sizeof(TOKEN_PRIVILEGES),
NULL,
NULL);
if (bSuccess == FALSE) dwError = GetLastError();
/* return status */
return dwError;
}
DWORD EnablePrivilegeInCurrentProcess(
_In_z_ LPWSTR lpPrivName,
_In_ BOOL bEnable)
{
HANDLE hToken;
BOOL bSuccess;
DWORD dwError = ERROR_SUCCESS;
/* Get a handle to our token */
bSuccess = OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
&hToken);
if (bSuccess == FALSE) return GetLastError();
/* Enable the privilege in the agent token */
dwError = EnablePrivilege(hToken, lpPrivName, bEnable);
/* We're done with this now */
CloseHandle(hToken);
/* return status */
return dwError;
}

View file

@ -126,6 +126,6 @@ KmtFltDeleteService(
DWORD KmtFltCloseService(
_Inout_ SC_HANDLE *ServiceHandle);
#endif /* KMT_FILTER_DRIVER */
#endif /* KMT_FLT_USER_MODE */
#endif /* !defined _KMTESTS_H_ */