Signed-off-by: Hugh McMaster hugh.mcmaster@outlook.com --- programs/reg/tests/delete.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/programs/reg/tests/delete.c b/programs/reg/tests/delete.c index fff3c5348b8..ee2257d42c5 100644 --- a/programs/reg/tests/delete.c +++ b/programs/reg/tests/delete.c @@ -100,6 +100,22 @@ static void test_delete(void) ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); verify_reg_nonexist(hkey, "\foo\bar");
+ add_value(hkey, "string\01", REG_SZ, "Value", 6); + add_value(hkey, "string2", REG_SZ, "foo\0bar", 9); + add_value(hkey, "\0", REG_SZ, "Value", 6); + + run_reg_exe("reg delete HKCU\" KEY_BASE " /v string\01 /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); + verify_reg_nonexist(hkey, "string\01"); + + run_reg_exe("reg delete HKCU\" KEY_BASE " /v string2 /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); + verify_reg_nonexist(hkey, "string2"); + + run_reg_exe("reg delete HKCU\" KEY_BASE " /v \0 /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); + verify_reg_nonexist(hkey, "\0"); + close_key(hkey);
run_reg_exe("reg delete HKCU\" KEY_BASE " /f", &r);
Signed-off-by: Hugh McMaster hugh.mcmaster@outlook.com --- The original behaviour of Wine69* is tested more thoroughly elsewhere. It is also missing closing quotes on each line, causing permanent failure.
programs/reg/tests/import.c | 50 ++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 25 deletions(-)
diff --git a/programs/reg/tests/import.c b/programs/reg/tests/import.c index 9b7a90ac99c..f8e7e4b7acb 100644 --- a/programs/reg/tests/import.c +++ b/programs/reg/tests/import.c @@ -1574,22 +1574,22 @@ static void test_import(void) verify_reg(hkey, "Wine68h", REG_BINARY, NULL, 0, 0); verify_reg(hkey, "Wine68i", REG_NONE, NULL, 0, 0);
- /* Test with embedded null characters */ + /* Test with escaped null characters */ test_import_str("REGEDIT4\n\n" "[HKEY_CURRENT_USER\" KEY_BASE "]\n" - ""Wine69a"="\0\n" - ""Wine69b"="\0\0\n" - ""Wine69c"="Value1\0\n" - ""Wine69d"="Value2\0\0\0\0\n" - ""Wine69e"="Value3\0Value4\n" - ""Wine69f"="\0Value5\n\n", &r); + ""Wine69a"="\\0"\n" + ""Wine69b"="\\0\\0"\n" + ""Wine69c"="Value1\\0"\n" + ""Wine69d"="Value2\\0\\0\\0\\0"\n" + ""Wine69e"="Value3\\0Value4"\n" + ""Wine69f"="\\0Value5"\n\n", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); - verify_reg_nonexist(hkey, "Wine69a"); - verify_reg_nonexist(hkey, "Wine69b"); - verify_reg_nonexist(hkey, "Wine69c"); - verify_reg_nonexist(hkey, "Wine69d"); - verify_reg_nonexist(hkey, "Wine69e"); - verify_reg_nonexist(hkey, "Wine69f"); + verify_reg(hkey, "Wine69a", REG_SZ, "\0", 3, 0); + verify_reg(hkey, "Wine69b", REG_SZ, "\0\0", 5, 0); + verify_reg(hkey, "Wine69c", REG_SZ, "Value1\0", 9, 0); + verify_reg(hkey, "Wine69d", REG_SZ, "Value2\0\0\0\0", 15, 0); + verify_reg(hkey, "Wine69e", REG_SZ, "Value3\0Value4", 15, 0); + verify_reg(hkey, "Wine69f", REG_SZ, "\0Value5", 9, 0);
test_import_str("REGEDIT4\n\n" "[HKEY_CURRENT_USER\" KEY_BASE "]\n" @@ -3126,19 +3126,19 @@ static void test_unicode_import(void) /* Test with embedded null characters */ test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n" "[HKEY_CURRENT_USER\" KEY_BASE "]\n" - ""Wine69a"="\0\n" - ""Wine69b"="\0\0\n" - ""Wine69c"="Value1\0\n" - ""Wine69d"="Value2\0\0\0\0\n" - ""Wine69e"="Value3\0Value4\n" - ""Wine69f"="\0Value5\n\n", &r); + ""Wine69a"="\\0"\n" + ""Wine69b"="\\0\\0"\n" + ""Wine69c"="Value1\\0"\n" + ""Wine69d"="Value2\\0\\0\\0\\0"\n" + ""Wine69e"="Value3\\0Value4"\n" + ""Wine69f"="\\0Value5"\n\n", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); - verify_reg_nonexist(hkey, "Wine69a"); - verify_reg_nonexist(hkey, "Wine69b"); - verify_reg_nonexist(hkey, "Wine69c"); - verify_reg_nonexist(hkey, "Wine69d"); - verify_reg_nonexist(hkey, "Wine69e"); - verify_reg_nonexist(hkey, "Wine69f"); + verify_reg(hkey, "Wine69a", REG_SZ, "\0", 3, 0); + verify_reg(hkey, "Wine69b", REG_SZ, "\0\0", 5, 0); + verify_reg(hkey, "Wine69c", REG_SZ, "Value1\0", 9, 0); + verify_reg(hkey, "Wine69d", REG_SZ, "Value2\0\0\0\0", 15, 0); + verify_reg(hkey, "Wine69e", REG_SZ, "Value3\0Value4", 15, 0); + verify_reg(hkey, "Wine69f", REG_SZ, "\0Value5", 9, 0);
test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n" "[HKEY_CURRENT_USER\" KEY_BASE "]\n"
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)