[PATCH 4/4] [NtDll&Server]: Thread information on LDT

Eric Pouech eric.pouech at wanadoo.fr
Sat Nov 4 04:52:44 CST 2006


- fixed returned status for NtQueryThreadInformation's ThreadDescriptorTable
  (aka LDT) class
(spotted by Peter Oberndorfer)

A+
---

 dlls/ntdll/thread.c |    6 ++++--
 server/ptrace.c     |    2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 151ff1e..43eb0cd 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -1150,7 +1150,7 @@ #ifdef __i386__
                     if (!status)
                     {
                         if (!(reply->flags & WINE_LDT_FLAGS_ALLOCATED))
-                            status = STATUS_INVALID_LDT_OFFSET;
+                            status = STATUS_ACCESS_VIOLATION;
                         else
                         {
                             wine_ldt_set_base ( &tdi->Entry, (void *)reply->base );
@@ -1161,7 +1161,9 @@ #ifdef __i386__
                 }
                 SERVER_END_REQ;
             }
-            if (status == STATUS_SUCCESS && ret_len) *ret_len = sizeof(*tdi);
+            if (status == STATUS_SUCCESS && ret_len)
+                /* yes, that's a bit strange, but it's the way it is */
+                *ret_len = sizeof(LDT_ENTRY);
 #else
             status = STATUS_NOT_IMPLEMENTED;
 #endif
diff --git a/server/ptrace.c b/server/ptrace.c
index ef72713..26a4042 100644
--- a/server/ptrace.c
+++ b/server/ptrace.c
@@ -445,7 +445,7 @@ void get_selector_entry( struct thread *
     }
     if (entry >= 8192)
     {
-        set_error( STATUS_INVALID_PARAMETER );  /* FIXME */
+        set_error( STATUS_ACCESS_VIOLATION );
         return;
     }
     if (suspend_for_ptrace( thread ))



More information about the wine-patches mailing list