From: Bruno Jesus <00cpxxx@gmail.com> Subject: regedit: Avoid registry export error when string data is zero sized (resend) Message-Id: Date: Sat, 12 Jul 2014 13:23:55 -0300 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 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);