From 0aead094a5f7b772439ea5f125308155997864c3 Mon Sep 17 00:00:00 2001 From: Hugh McMaster Date: Mon, 7 May 2018 23:50:45 +0000 Subject: [PATCH] reg: Stop exporting REG_SZ data at the first NUL character. Signed-off-by: Hugh McMaster Signed-off-by: Alexandre Julliard --- programs/reg/export.c | 11 ++++++----- programs/reg/tests/reg.c | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/programs/reg/export.c b/programs/reg/export.c index 622e7ca8d94..8b08da12999 100644 --- a/programs/reg/export.c +++ b/programs/reg/export.c @@ -39,7 +39,10 @@ static WCHAR *escape_string(WCHAR *str, size_t str_len, size_t *line_len) for (i = 0, escape_count = 0; i < str_len; i++) { WCHAR c = str[i]; - if (c == '\r' || c == '\n' || c == '\\' || c == '"' || c == '\0') + + if (!c) break; + + if (c == '\r' || c == '\n' || c == '\\' || c == '"') escape_count++; } @@ -49,6 +52,8 @@ static WCHAR *escape_string(WCHAR *str, size_t str_len, size_t *line_len) { WCHAR c = str[i]; + if (!c) break; + switch (c) { case '\r': @@ -67,10 +72,6 @@ static WCHAR *escape_string(WCHAR *str, size_t str_len, size_t *line_len) buf[pos++] = '\\'; buf[pos] = '"'; break; - case '\0': - buf[pos++] = '\\'; - buf[pos] = '0'; - break; default: buf[pos] = c; } diff --git a/programs/reg/tests/reg.c b/programs/reg/tests/reg.c index aba71b7b87f..ea4e128da5a 100644 --- a/programs/reg/tests/reg.c +++ b/programs/reg/tests/reg.c @@ -4679,7 +4679,7 @@ static void test_export(void) run_reg_exe("reg export HKEY_CURRENT_USER\\" KEY_BASE " file.reg", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); - ok(compare_export("file.reg", embedded_null_test, TODO_REG_COMPARE), "compare_export() failed\n"); + ok(compare_export("file.reg", embedded_null_test, 0), "compare_export() failed\n"); delete_key(HKEY_CURRENT_USER, KEY_BASE); }