/* Check if we can abuse the TEB */
if (AnsiString.MaximumLength > 260)
{
-RosHack:
/* We can't, allocate a new string */
AtomNameString = &UnicodeString;
Status = RtlAnsiStringToUnicodeString(AtomNameString,
/* We can! Get the TEB String */
AtomNameString = &NtCurrentTeb()->StaticUnicodeString;
- /* FIXME: HACK! */
- if (!AtomNameString->MaximumLength)
- {
- DPRINT1("Hit the ROS TEB Static Unicode String Bug\n",
- "Please try to fix the underlying problem!!!\n");
- goto RosHack;
- }
-
/* Convert it into the TEB */
Status = RtlAnsiStringToUnicodeString(AtomNameString,
&AnsiString,
/* Check if we can abuse the TEB */
if (AnsiString.MaximumLength > 260)
{
-RosHack:
/* We can't, allocate a new string */
AtomNameString = &UnicodeString;
Status = RtlAnsiStringToUnicodeString(AtomNameString,
/* We can! Get the TEB String */
AtomNameString = &NtCurrentTeb()->StaticUnicodeString;
- /* FIXME: HACK! */
- if (!AtomNameString->MaximumLength)
- {
- DPRINT1("Hit the ROS TEB Static Unicode String Bug\n",
- "Please try to fix the underlying problem!!!\n");
- goto RosHack;
- }
-
/* Convert it into the TEB */
Status = RtlAnsiStringToUnicodeString(AtomNameString,
&AnsiString,
/* Load execution options */
LoadImageFileExecutionOptions(Peb);
+ /* Initialize the static teb string */
+ NtCurrentTeb()->StaticUnicodeString.Length = 0;
+ NtCurrentTeb()->StaticUnicodeString.MaximumLength = sizeof(NtCurrentTeb()->StaticUnicodeBuffer);
+ NtCurrentTeb()->StaticUnicodeString.Buffer = NtCurrentTeb()->StaticUnicodeBuffer;
+
/* build full ntdll path */
wcscpy (FullNtDllPath, SharedUserData->NtSystemRoot);
wcscat (FullNtDllPath, L"\\system32\\ntdll.dll");