Gerald Pfeifer : ntdll: Fix computation in enumerate_key().

Alexandre Julliard julliard at winehq.org
Mon Nov 26 08:16:26 CST 2007


Module: wine
Branch: master
Commit: 15f8b80ba7ac0fba9fe94b46c1c4f63308ab75e1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=15f8b80ba7ac0fba9fe94b46c1c4f63308ab75e1

Author: Gerald Pfeifer <gerald at pfeifer.com>
Date:   Thu Nov 22 21:41:29 2007 +0100

ntdll: Fix computation in enumerate_key().

---

 dlls/ntdll/reg.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/dlls/ntdll/reg.c b/dlls/ntdll/reg.c
index 85297e3..8b724ec 100644
--- a/dlls/ntdll/reg.c
+++ b/dlls/ntdll/reg.c
@@ -271,8 +271,16 @@ static NTSTATUS enumerate_key( HANDLE handle, int index, KEY_INFORMATION_CLASS i
                     fixed_size = (char *)keyinfo.Name - (char *)&keyinfo;
                     keyinfo.LastWriteTime = modif;
                     keyinfo.TitleIndex = 0;
-                    keyinfo.ClassLength = max( 0, wine_server_reply_size(reply) - reply->namelen );
-                    keyinfo.ClassOffset = keyinfo.ClassLength ? fixed_size + reply->namelen : -1;
+                    if (reply->namelen < wine_server_reply_size(reply))
+                    {
+                        keyinfo.ClassLength = wine_server_reply_size(reply) - reply->namelen;
+                        keyinfo.ClassOffset = fixed_size + reply->namelen;
+                    }
+                    else
+                    {
+                        keyinfo.ClassLength = 0;
+                        keyinfo.ClassOffset = -1;
+                    }
                     keyinfo.NameLength = reply->namelen;
                     memcpy( info, &keyinfo, min( length, fixed_size ) );
                 }




More information about the wine-cvs mailing list