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