[ros-diffs] [navaraf] 16919: Fix NULL-terminating of symbol image names.

navaraf at svn.reactos.com navaraf at svn.reactos.com
Sun Jul 31 13:06:55 CEST 2005


Fix NULL-terminating of symbol image names.
Modified: trunk/reactos/ntoskrnl/kdbg/kdb_symbols.c
  _____  

Modified: trunk/reactos/ntoskrnl/kdbg/kdb_symbols.c
--- trunk/reactos/ntoskrnl/kdbg/kdb_symbols.c	2005-07-31 10:22:29 UTC
(rev 16918)
+++ trunk/reactos/ntoskrnl/kdbg/kdb_symbols.c	2005-07-31 11:06:50 UTC
(rev 16919)
@@ -55,6 +55,7 @@

   PEPROCESS CurrentProcess;
   PPEB Peb = NULL;
   INT Count = 0;
+  INT Length;
 
   CurrentProcess = PsGetCurrentProcess();
   if (CurrentProcess != NULL)
@@ -73,15 +74,12 @@
          current_entry != NULL)
     {
       current = CONTAINING_RECORD(current_entry, LDR_DATA_TABLE_ENTRY,
InLoadOrderModuleList);
-
+      Length = min(current->BaseDllName.Length / sizeof(WCHAR), 255);
       if ((Address != NULL && (Address >= (PVOID)current->DllBase &&
                                Address < (PVOID)((char
*)current->DllBase + current->SizeOfImage))) ||
-          (Name != NULL && _wcsicmp(current->BaseDllName.Buffer, Name)
== 0) ||
+          (Name != NULL && _wcsnicmp(current->BaseDllName.Buffer, Name,
Length) == 0) ||
           (Index >= 0 && Count++ == Index))
         {
-	  INT Length = current->BaseDllName.Length;
-	  if (Length > 255)
-	    Length = 255;
 	  wcsncpy(pInfo->Name, current->BaseDllName.Buffer, Length);
 	  pInfo->Name[Length] = L'\0';
           pInfo->Base = (ULONG_PTR)current->DllBase;
@@ -111,6 +109,7 @@
   PLDR_DATA_TABLE_ENTRY current;
   extern LIST_ENTRY ModuleListHead;
   INT Count = 0;
+  INT Length;
 
   current_entry = ModuleListHead.Flink;
 
@@ -118,15 +117,14 @@
     {
       current = CONTAINING_RECORD(current_entry, LDR_DATA_TABLE_ENTRY,
InLoadOrderModuleList);
 
+      Length = min(current->BaseDllName.Length / sizeof(WCHAR), 255);
       if ((Address != NULL && (Address >= (PVOID)current->DllBase &&
                                Address <
(PVOID)((ULONG_PTR)current->DllBase + current->SizeOfImage))) ||
-          (Name != NULL && _wcsnicmp(current->BaseDllName.Buffer, Name,
-                                     current->BaseDllName.Length /
sizeof(WCHAR)) == 0) ||
+          (Name != NULL && _wcsnicmp(current->BaseDllName.Buffer, Name,
Length) == 0) ||
           (Index >= 0 && Count++ == Index))
         {
-	  wcsncpy(pInfo->Name, current->BaseDllName.Buffer,
-	          min(255, current->BaseDllName.Length /
sizeof(WCHAR)));
-	  pInfo->Name[255] = L'\0';
+	  wcsncpy(pInfo->Name, current->BaseDllName.Buffer, Length);
+	  pInfo->Name[Length] = L'\0';
           pInfo->Base = (ULONG_PTR)current->DllBase;
           pInfo->Size = current->SizeOfImage;
           pInfo->RosSymInfo = current->RosSymInfo;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20050731/0c1ab7cf/attachment.html


More information about the Ros-diffs mailing list