regedit: Correctly parse key name containing ']' when deleting/exporting

Lei Zhang thestig at google.com
Thu Mar 1 20:55:03 CST 2007


Hi,

I noticed Wine's regedit does not properly export key names containing
']', or delete them when running "regedit /D key" from the command
line. (Bug 7599)
-------------- next part --------------
From 017aaced7cd409567981ee3c8eb6e7de793fc28e Mon Sep 17 00:00:00 2001
From: Lei Zhang <thestig at google.com>
Date: Thu, 1 Mar 2007 16:34:42 -0800
Subject: regedit: Correctly parse key name containing ']' when deleting/exporting.
---
 programs/regedit/regproc.c |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c
index 6c8e3a5..16a2b8c 100644
--- a/programs/regedit/regproc.c
+++ b/programs/regedit/regproc.c
@@ -449,12 +449,16 @@ LPSTR getRegKeyName(LPSTR lpLine)
 
     keyNameBeg = strchr(lpLineCopy, '\\');    /* The key name start by '\' */
     if (keyNameBeg) {
-        LPSTR keyNameEnd;
-
         keyNameBeg++;                             /* is not part of the name */
-        keyNameEnd = strrchr(lpLineCopy, ']');
-        if (keyNameEnd) {
-            *keyNameEnd = '\0';               /* remove ']' from the key name */
+
+        if (lpLine[0] == '[') /* need to find matching ']' */
+        {
+            LPSTR keyNameEnd;
+
+            keyNameEnd = strrchr(lpLineCopy, ']');
+            if (keyNameEnd) {
+                *keyNameEnd = '\0';               /* remove ']' from the key name */
+            }
         }
     } else {
         keyNameBeg = lpLineCopy + strlen(lpLineCopy); /* branch - empty string */
-- 
1.4.1


More information about the wine-patches mailing list