regedit: Avoid registry export error when string data is zero sized (resend)

Bruno Jesus 00cpxxx at gmail.com
Sat Jul 12 11:23:55 CDT 2014


If a NULL is concatenated into the output string no more data will be
appended resulting in trimmed result (double NULL ends the string).

Fixes http://bugs.winehq.org/show_bug.cgi?id=21945
-------------- next part --------------
diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c
index 18b6e98..93d6fbd 100644
--- a/programs/regedit/regproc.c
+++ b/programs/regedit/regproc.c
@@ -1180,10 +1180,12 @@ static void export_hkey(FILE *file, HKEY key,
                     lstrcpyW(*line_buf + line_len, start);
                     line_len += len;
 
-                    /* At this point we know wstr is '\0'-terminated
-                     * so we can subtract 1 from the size
+                    /* At this point we know wstr is '\0'-terminated so we can subtract 1 from the size
+                     * We must only concat strings with len > 0, otherwise the extra NULL added in the
+                     * exported string will result in trimmed output
                      */
-                    REGPROC_export_string(line_buf, line_buf_size, &line_len, wstr, val_size1 / sizeof(WCHAR) - 1);
+                    if (*wstr)
+                        REGPROC_export_string(line_buf, line_buf_size, &line_len, wstr, val_size1 / sizeof(WCHAR) - 1);
 
                     REGPROC_resize_char_buffer(line_buf, line_buf_size, line_len + lstrlenW(end));
                     lstrcpyW(*line_buf + line_len, end);


More information about the wine-patches mailing list