Alexandre Julliard : msi/tests: Avoid corrupting the pending file renames key on failure.

Alexandre Julliard julliard at winehq.org
Thu Sep 30 11:23:37 CDT 2010


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Sep 30 13:42:37 2010 +0200

msi/tests: Avoid corrupting the pending file renames key on failure.

---

 dlls/msi/tests/install.c |   19 +++++++------------
 1 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/dlls/msi/tests/install.c b/dlls/msi/tests/install.c
index 345c63f..11b1de1 100644
--- a/dlls/msi/tests/install.c
+++ b/dlls/msi/tests/install.c
@@ -8995,17 +8995,18 @@ static char rename_ops[]      = "PendingFileRenameOperations";
 static void process_pending_renames(HKEY hkey)
 {
     char *buf, *src, *dst, *buf2, *buf2ptr;
-    DWORD size, buf2len = 0;
+    DWORD size;
     LONG ret;
     BOOL found = FALSE;
 
     ret = RegQueryValueExA(hkey, rename_ops, NULL, NULL, NULL, &size);
-    buf = HeapAlloc(GetProcessHeap(), 0, size);
-    buf2ptr = buf2 = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
-    buf[0] = 0;
+    buf = HeapAlloc(GetProcessHeap(), 0, size + 1);
+    buf2ptr = buf2 = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size + 1);
 
     ret = RegQueryValueExA(hkey, rename_ops, NULL, NULL, (LPBYTE)buf, &size);
-    ok(!ret, "RegQueryValueExA failed %d (%u)\n", ret, GetLastError());
+    buf[size] = 0;
+    ok(!ret, "RegQueryValueExA failed %d\n", ret);
+    if (ret) return;
 
     for (src = buf; *src; src = dst + strlen(dst) + 1)
     {
@@ -9016,16 +9017,13 @@ static void process_pending_renames(HKEY hkey)
         if (!strstr(src, "msitest"))
         {
             lstrcpyA(buf2ptr, src);
-            buf2len += strlen(src) + 1;
             buf2ptr += strlen(src) + 1;
             if (*dst)
             {
                 lstrcpyA(buf2ptr, dst);
                 buf2ptr += strlen(dst) + 1;
-                buf2len += strlen(dst) + 1;
             }
             buf2ptr++;
-            buf2len++;
             continue;
         }
 
@@ -9049,10 +9047,7 @@ static void process_pending_renames(HKEY hkey)
     ok(found, "Expected a 'msitest' entry\n");
 
     if (*buf2)
-    {
-        buf2len++;
-        RegSetValueExA(hkey, rename_ops, 0, REG_MULTI_SZ, (LPBYTE)buf2, buf2len);
-    }
+        RegSetValueExA(hkey, rename_ops, 0, REG_MULTI_SZ, (LPBYTE)buf2, buf2ptr + 1 - buf2);
     else
         RegDeleteValueA(hkey, rename_ops);
 




More information about the wine-cvs mailing list