https://git.reactos.org/?p=reactos.git;a=commitdiff;h=e7744236893499fecb422…
commit e7744236893499fecb422a6f303657cdcd58d11e
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Sun Oct 23 01:48:20 2022 +0200
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Wed Oct 26 01:45:26 2022 +0200
[NTDLL:CSR] Don't hardcode types in sizeofs; move local variables into code blocks
where they are used.
---
dll/ntdll/csr/capture.c | 10 ++++------
dll/ntdll/csr/connect.c | 35 +++++++++++++++++++----------------
2 files changed, 23 insertions(+), 22 deletions(-)
diff --git a/dll/ntdll/csr/capture.c b/dll/ntdll/csr/capture.c
index 1a388d467a4..9252a521f0a 100644
--- a/dll/ntdll/csr/capture.c
+++ b/dll/ntdll/csr/capture.c
@@ -261,7 +261,7 @@ CsrCaptureMessageString(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
/* Null-terminate the string if we don't take up the whole space */
if (CapturedString->Length < CapturedString->MaximumLength)
- CapturedString->Buffer[CapturedString->Length] = '\0';
+ CapturedString->Buffer[CapturedString->Length] = ANSI_NULL;
}
static VOID
@@ -277,11 +277,9 @@ CsrCaptureMessageUnicodeStringInPlace(IN OUT PCSR_CAPTURE_BUFFER
CaptureBuffer,
String->MaximumLength,
(PSTRING)String);
- /* Null-terminate the string */
- if (String->MaximumLength >= String->Length + sizeof(WCHAR))
- {
- String->Buffer[String->Length / sizeof(WCHAR)] = L'\0';
- }
+ /* Null-terminate the string if we don't take up the whole space */
+ if (String->Length + sizeof(WCHAR) <= String->MaximumLength)
+ String->Buffer[String->Length / sizeof(WCHAR)] = UNICODE_NULL;
}
/*
diff --git a/dll/ntdll/csr/connect.c b/dll/ntdll/csr/connect.c
index f9d007b701f..98033274e44 100644
--- a/dll/ntdll/csr/connect.c
+++ b/dll/ntdll/csr/connect.c
@@ -49,7 +49,7 @@ CsrpConnectToServer(IN PWSTR ObjectDirectory)
SID_IDENTIFIER_AUTHORITY NtSidAuthority = {SECURITY_NT_AUTHORITY};
PSID SystemSid = NULL;
CSR_API_CONNECTINFO ConnectionInfo;
- ULONG ConnectionInfoLength = sizeof(CSR_API_CONNECTINFO);
+ ULONG ConnectionInfoLength = sizeof(ConnectionInfo);
DPRINT("%s(%S)\n", __FUNCTION__, ObjectDirectory);
@@ -100,13 +100,13 @@ CsrpConnectToServer(IN PWSTR ObjectDirectory)
}
/* Set up the port view structures to match them with the section */
- LpcWrite.Length = sizeof(PORT_VIEW);
+ LpcWrite.Length = sizeof(LpcWrite);
LpcWrite.SectionHandle = CsrSectionHandle;
LpcWrite.SectionOffset = 0;
LpcWrite.ViewSize = CsrSectionViewSize.u.LowPart;
LpcWrite.ViewBase = 0;
LpcWrite.ViewRemoteBase = 0;
- LpcRead.Length = sizeof(REMOTE_PORT_VIEW);
+ LpcRead.Length = sizeof(LpcRead);
LpcRead.ViewSize = 0;
LpcRead.ViewBase = 0;
@@ -202,12 +202,6 @@ CsrClientConnectToServer(IN PWSTR ObjectDirectory,
{
NTSTATUS Status;
PIMAGE_NT_HEADERS NtHeader;
- UNICODE_STRING CsrSrvName;
- HANDLE hCsrSrv;
- ANSI_STRING CsrServerRoutineName;
- CSR_API_MESSAGE ApiMessage;
- PCSR_CLIENT_CONNECT ClientConnect = &ApiMessage.Data.CsrClientConnect;
- PCSR_CAPTURE_BUFFER CaptureBuffer;
DPRINT("CsrClientConnectToServer: %lx %p\n", ServerId, ConnectionInfo);
@@ -241,8 +235,11 @@ CsrClientConnectToServer(IN PWSTR ObjectDirectory,
/* Now we can check if we are inside or not */
if (InsideCsrProcess)
{
+ UNICODE_STRING CsrSrvName;
+ HANDLE hCsrSrv;
+ ANSI_STRING CsrServerRoutineName;
+
/* We're inside, so let's find csrsrv */
- DPRINT("Next-GEN CSRSS support\n");
RtlInitUnicodeString(&CsrSrvName, L"csrsrv");
Status = LdrGetDllHandle(NULL,
NULL,
@@ -267,6 +264,10 @@ CsrClientConnectToServer(IN PWSTR ObjectDirectory,
/* Now check if connection info is given */
if (ConnectionInfo)
{
+ CSR_API_MESSAGE ApiMessage;
+ PCSR_CLIENT_CONNECT ClientConnect = &ApiMessage.Data.CsrClientConnect;
+ PCSR_CAPTURE_BUFFER CaptureBuffer;
+
/* Well, we're definitely in a client now */
InsideCsrProcess = FALSE;
@@ -307,7 +308,7 @@ CsrClientConnectToServer(IN PWSTR ObjectDirectory,
Status = CsrClientCallServer(&ApiMessage,
CaptureBuffer,
CSR_CREATE_API_NUMBER(CSRSRV_SERVERDLL_INDEX,
CsrpClientConnect),
- sizeof(CSR_CLIENT_CONNECT));
+ sizeof(*ClientConnect));
/* Copy the updated connection info data back into the user buffer */
RtlMoveMemory(ConnectionInfo,
@@ -368,8 +369,6 @@ CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage,
IN ULONG DataLength)
{
NTSTATUS Status;
- ULONG PointerCount;
- PULONG_PTR OffsetPointer;
/* Make sure the length is valid */
if (DataLength > (MAXSHORT - sizeof(CSR_API_MESSAGE)))
@@ -397,6 +396,9 @@ CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage,
/* Check if we are already inside a CSR Server */
if (!InsideCsrProcess)
{
+ ULONG PointerCount;
+ PULONG_PTR OffsetPointer;
+
/* Check if we got a Capture Buffer */
if (CaptureBuffer)
{
@@ -471,12 +473,13 @@ CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage,
}
else
{
- /* This is a server-to-server call. Save our CID and do a direct call. */
- DPRINT("Next gen server-to-server call\n");
+ /* This is a server-to-server call */
+ DPRINT("Server-to-server call\n");
- /* We check this equality inside CsrValidateMessageBuffer */
+ /* Save our CID; we check this equality inside CsrValidateMessageBuffer */
ApiMessage->Header.ClientId = NtCurrentTeb()->ClientId;
+ /* Do a direct call */
Status = CsrServerApiRoutine(&ApiMessage->Header,
&ApiMessage->Header);