Signed-off-by: Hugh McMaster hugh.mcmaster@outlook.com --- programs/reg/tests/export.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
diff --git a/programs/reg/tests/export.c b/programs/reg/tests/export.c index 32c99e36376..2c7ba88fb59 100644 --- a/programs/reg/tests/export.c +++ b/programs/reg/tests/export.c @@ -168,6 +168,16 @@ static void test_export(void) ""\\foo\\bar"=""\r\n\r\n" "[HKEY_CURRENT_USER\" KEY_BASE "\https://winehq.org%5D%5Cr%5Cn%5Cr%5Cn";
+ const char *escaped_null_test = + "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n" + "[HKEY_CURRENT_USER\" KEY_BASE "]\r\n" + ""Wine5a"="\\0"\r\n" + ""Wine5b"="\\0\\0"\r\n" + ""Wine5c"="Value1\\0"\r\n" + ""Wine5d"="Value2\\0\\0\\0\\0"\r\n" + ""Wine5e"="Value3\\0Value4"\r\n" + ""Wine5f"="\\0Value5"\r\n\r\n"; + delete_tree(HKEY_CURRENT_USER, KEY_BASE); verify_key_nonexist(HKEY_CURRENT_USER, KEY_BASE);
@@ -402,6 +412,21 @@ static void test_export(void) ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); ok(compare_export("file.reg", slashes_test, TODO_REG_COMPARE), "compare_export() failed\n"); delete_tree(HKEY_CURRENT_USER, KEY_BASE); + + /* Test escaped null characters */ + add_key(HKEY_CURRENT_USER, KEY_BASE, &hkey); + add_value(hkey, "Wine5a", REG_SZ, "\0", 3); + add_value(hkey, "Wine5b", REG_SZ, "\0\0", 5); + add_value(hkey, "Wine5c", REG_SZ, "Value1\0", 9); + add_value(hkey, "Wine5d", REG_SZ, "Value2\0\0\0\0", 15); + add_value(hkey, "Wine5e", REG_SZ, "Value3\0Value4", 15); + add_value(hkey, "Wine5f", REG_SZ, "\0Value5", 9); + close_key(hkey); + + run_reg_exe("reg export HKEY_CURRENT_USER\" KEY_BASE " file.reg /y", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); + ok(compare_export("file.reg", escaped_null_test, 0), "compare_export() failed\n"); + delete_tree(HKEY_CURRENT_USER, KEY_BASE); }
START_TEST(export)