RegSetValueEx problem?

gerard patel gerard.patel at asi.fr
Sun Apr 8 11:27:01 CDT 2001


At 10:54 AM 08/04/2001 +0100, you wrote:
>
>I've found time to do some more digging, but I'm still stumped.
<snip>

I have browsed server/registry.c and it seems that the registry
stores a terminating null for strings; so if you have in the registry
file a string like "0123456789", it get in memory a length of 11.
So I guess that the fix would be to fix the length by -1 somewhere
in the path server->ntdll->advapi

I have tried this but I am not sure at all this is correct :

--- registry.c.orig     Mon Mar  5 20:34:21 2001
+++ registry.c  Sun Apr  8 18:11:39 2001
@@ -799,14 +799,17 @@
     struct key_value *value;
     int index;
     size_t ret = 0;
+    size_t l;
 
     if ((value = find_value( key, name, &index )))
     {
         *type = value->type;
-        *len  = value->len;
-        if (value->data && offset < value->len)
+        l = value->len;
+        if ((value->type == REG_SZ) && l) l--;
+        *len  = l;
+        if (value->data && offset < l)
         {
-            if (maxlen > value->len - offset) maxlen = value->len - offset;
+            if (maxlen > l - offset) maxlen = l - offset;
             memcpy( data, (char *)value->data + offset, maxlen );
             ret = maxlen;
         }                     

Gerard 





More information about the wine-devel mailing list