[PATCH 6/6] regedit/tests: Add Unicode tests for importing invalid registry data
Hugh McMaster
hugh.mcmaster at outlook.com
Thu Aug 24 07:46:27 CDT 2017
Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
---
programs/regedit/tests/regedit.c | 510 +++++++++++++++++++++++++++++++++++++++
1 file changed, 510 insertions(+)
diff --git a/programs/regedit/tests/regedit.c b/programs/regedit/tests/regedit.c
index 788c3b593d..8a828d706b 100644
--- a/programs/regedit/tests/regedit.c
+++ b/programs/regedit/tests/regedit.c
@@ -1534,6 +1534,515 @@ static void test_invalid_import(void)
ok(lr == ERROR_SUCCESS, "RegDeleteKeyA failed: %d\n", lr);
}
+static void test_invalid_import_unicode(void)
+{
+ LONG lr;
+ HKEY hkey;
+ DWORD dword = 0x8, os_version, major_version, minor_version;
+
+ lr = RegDeleteKeyA(HKEY_CURRENT_USER, KEY_BASE);
+ ok(lr == ERROR_SUCCESS || lr == ERROR_FILE_NOT_FOUND, "RegDeleteKeyA failed: %d\n", lr);
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"TestNoEndQuote\"=\"Asdffdsa\n");
+ lr = RegOpenKeyExA(HKEY_CURRENT_USER, KEY_BASE, 0, KEY_READ|KEY_SET_VALUE, &hkey);
+ ok(lr == ERROR_SUCCESS, "RegOpenKeyExA failed: %d\n", lr);
+ verify_reg_nonexist(hkey, "TestNoEndQuote");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"TestNoBeginQuote\"=Asdffdsa\"\n");
+ verify_reg_nonexist(hkey, "TestNoBeginQuote");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"TestNoQuotes\"=Asdffdsa\n");
+ verify_reg_nonexist(hkey, "TestNoQuotes");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"NameNoEndQuote=\"Asdffdsa\"\n");
+ verify_reg_nonexist(hkey, "NameNoEndQuote");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "NameNoBeginQuote\"=\"Asdffdsa\"\n");
+ verify_reg_nonexist(hkey, "NameNoBeginQuote");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "NameNoQuotes=\"Asdffdsa\"\n");
+ verify_reg_nonexist(hkey, "NameNoQuotes");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"MixedQuotes=Asdffdsa\"\n");
+ verify_reg_nonexist(hkey, "MixedQuotes");
+ verify_reg_nonexist(hkey, "MixedQuotes=Asdffdsa");
+
+ /* Test import with non-standard registry file headers */
+ exec_import_wstr("\xef\xbb\xbfREGEDIT3\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test1\"=\"Value\"\n");
+ verify_reg_nonexist(hkey, "Test1");
+
+ exec_import_wstr("\xef\xbb\xbfregedit4\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test2\"=\"Value\"\n");
+ verify_reg_nonexist(hkey, "Test2");
+
+ exec_import_wstr("\xef\xbb\xbfRegedit4\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test3\"=\"Value\"\n");
+ verify_reg_nonexist(hkey, "Test3");
+
+ exec_import_wstr("\xef\xbb\xbfREGEDIT 4\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test4\"=\"Value\"\n");
+ verify_reg_nonexist(hkey, "Test4");
+
+ exec_import_wstr("\xef\xbb\xbfREGEDIT4FOO\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test5\"=\"Value\"\n");
+ verify_reg_nonexist(hkey, "Test5");
+
+ exec_import_wstr("\xef\xbb\xbfREGEDIT4 FOO\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test6\"=\"Value\"\n");
+ verify_reg_nonexist(hkey, "Test6");
+
+ exec_import_wstr("\xef\xbb\xbfREGEDIT5\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test7\"=\"Value\"\n");
+ verify_reg_nonexist(hkey, "Test7");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 4.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test8\"=\"Value\"\n");
+ verify_reg_nonexist(hkey, "Test8");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test9\"=\"Value\"\n");
+ verify_reg_nonexist(hkey, "Test9");
+
+ exec_import_wstr("\xef\xbb\xbfWINDOWS REGISTRY EDITOR VERSION 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test10\"=\"Value\"\n");
+ verify_reg_nonexist(hkey, "Test10");
+
+ os_version = GetVersion();
+ major_version = LOBYTE(LOWORD(os_version));
+ minor_version = HIBYTE(LOWORD(os_version));
+
+ if (major_version > 5 || (major_version == 5 && minor_version > 0))
+ {
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test11\"=\"Value\"\n");
+ verify_reg_nonexist(hkey, "Test11");
+ }
+ else /* Windows 2000 */
+ win_skip("Skipping a non-standard header test\n");
+
+ /* Test multi-line import with incorrect comma placement */
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Multi-Line1\"=hex(7):4c,00,69,00,6e,00,65,00,20,00\\\n"
+ ",63,00,6f,00,6e,00,63,00,61,00,74,00,\\\n"
+ "65,00,6e,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n");
+ verify_reg_nonexist(hkey, "Multi-Line1");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Multi-Line2\"=hex(7):4c,00,69,00,6e,00,65,00,20,00\\\n"
+ " ,63,00,6f,00,6e,00,63,00,61,00,74,00,\\\n"
+ " 65,00,6e,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n");
+ verify_reg_nonexist(hkey, "Multi-Line2");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Multi-Line3\"=hex(7):4c,00,69,00,6e,00,65,00,20,00\\\n"
+ ",63,00,6f,00,6e,00,63,00,61,00,74,00,\\\n"
+ " 65,00,6e,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n");
+ verify_reg_nonexist(hkey, "Multi-Line3");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Multi-Line4\"=hex(7):4c,00,69,00,6e,00,65,00,20,00\\\n"
+ ", 63,00,6f,00,6e,00,63,00,61,00,74,00,\\\n"
+ " 65,00,6e,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n");
+ verify_reg_nonexist(hkey, "Multi-Line4");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test12a\"=dword:\n"
+ "\"Test12b\"=dword:hello\n"
+ "\"Test12c\"=dword:123456789\n"
+ "\"Test12d\"=dword:012345678\n"
+ "\"Test12e\"=dword:000000001\n\n");
+ verify_reg_nonexist(hkey, "Test12a");
+ verify_reg_nonexist(hkey, "Test12b");
+ verify_reg_nonexist(hkey, "Test12c");
+ verify_reg_nonexist(hkey, "Test12d");
+ verify_reg_nonexist(hkey, "Test12e");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test13a\"=dword:12345678abc\n"
+ "\"Test13b\"=dword:12345678 abc\n\n");
+ verify_reg_nonexist(hkey, "Test13a");
+ verify_reg_nonexist(hkey, "Test13b");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test14a\"=dword:0x123\n"
+ "\"Test14b\"=dword:123 456\n"
+ "\"Test14c\"=dword:1234 5678\n\n");
+ verify_reg_nonexist(hkey, "Test14a");
+ verify_reg_nonexist(hkey, "Test14b");
+ verify_reg_nonexist(hkey, "Test14c");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test15a\"=\"foo\"bar\"\n"
+ "\"Test15b\"=\"foo\"\"bar\"\n\n");
+ verify_reg_nonexist(hkey, "Test15a");
+ verify_reg_nonexist(hkey, "Test15b");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test16a\"=\n"
+ "\"Test16b\"=\\\"\n"
+ "\"Test16c\"=\\\"Value\\\"\n"
+ "\"Test16d\"=\\\"Value\"\n\n");
+ verify_reg_nonexist(hkey, "Test16a");
+ verify_reg_nonexist(hkey, "Test16b");
+ verify_reg_nonexist(hkey, "Test16c");
+ verify_reg_nonexist(hkey, "Test16d");
+
+ /* Test key name and value name concatenation */
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "\\\n"
+ "Subkey1]\n");
+ verify_key_nonexist(hkey, "Subkey1");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "\n"
+ "\\Subkey2]\n");
+ verify_key_nonexist(hkey, "Subkey2");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test\\\n"
+ "17a\"=\"Value 1\"\n"
+ "\"Test17b\"=\"Value 2\"\n"
+ "\"Test\n"
+ "\\17c\"=\"Value 3\"\n\n");
+ verify_reg_nonexist(hkey, "Test17a");
+ verify_reg(hkey, "Test17b", REG_SZ, "Value 2", 8, 0);
+ verify_reg_nonexist(hkey, "Test17c");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test18a\"=dword:1234\\\n"
+ "5678\n"
+ "\"Test18b\"=\"Test \\\n"
+ "Value\"\n\n");
+ verify_reg_nonexist(hkey, "Test18a");
+ verify_reg_nonexist(hkey, "Test18b");
+
+ /* Test hex data concatenation for REG_NONE, REG_EXPAND_SZ and REG_BINARY */
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test19a\"=hex(0):56,00,61,00,6c,00\\\n"
+ ",75,00,65,00,00,00\n"
+ "\"Test19b\"=hex(0):56,00,61,00,6c,00\\\n"
+ " ,75,00,65,00,00,00\n"
+ "\"Test19c\"=hex(0):56,00,61,00,6c,00\\\n"
+ " 75,00,65,00,00,00\n"
+ "\"Test19d\"=hex(0):56,00,61,00,6c,00,7\\\n"
+ "5,00,65,00,00,00\n"
+ "\"Test19e\"=hex(0):56,00,61,00,6c,00,7\\\n"
+ " 5,00,65,00,00,00\n"
+ "\"Test19f\"=hex(0):56,00,61,00,\\;comment\n"
+ " 6c,00,75,00,\\#comment\n"
+ " 65,00,00,00\n\n");
+ verify_reg_nonexist(hkey, "Test19a");
+ verify_reg_nonexist(hkey, "Test19b");
+ verify_reg_nonexist(hkey, "Test19c");
+ verify_reg_nonexist(hkey, "Test19d");
+ verify_reg_nonexist(hkey, "Test19e");
+ verify_reg_nonexist(hkey, "Test19f");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test20a\"=hex(2):25,00,50,00,41,00\\\n"
+ ",54,00,48,00,25,00,00,00\n"
+ "\"Test20b\"=hex(2):25,00,50,00,41,00\\\n"
+ " ,54,00,48,00,25,00,00,00\n"
+ "\"Test20c\"=hex(2):25,00,50,00,41,00\\\n"
+ " 54,00,48,00,25,00,00,00\n"
+ "\"Test20d\"=hex(2):25,00,50,00,4\\\n"
+ "1,00,54,00,48,00,25,00,00,00\n"
+ "\"Test20e\"=hex(2):25,00,50,00,4\\\n"
+ " 1,00,54,00,48,00,25,00,00\n"
+ "\"Test20f\"=hex(2):25,00,50,00,41,00,\\;comment\n"
+ " 54,00,48,00,\\#comment\n"
+ " 25,00,00,00\n\n");
+ verify_reg_nonexist(hkey, "Test20a");
+ verify_reg_nonexist(hkey, "Test20b");
+ verify_reg_nonexist(hkey, "Test20c");
+ verify_reg_nonexist(hkey, "Test20d");
+ verify_reg_nonexist(hkey, "Test20e");
+ verify_reg_nonexist(hkey, "Test20f");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Test21a\"=hex:11,22,33,44\\\n"
+ ",55,66,77,88\n"
+ "\"Test21b\"=hex:11,22,33,44\\\n"
+ " ,55,66,77,88\n"
+ "\"Test21c\"=hex:11,22,33,44\\\n"
+ " 55,66,77,88\n"
+ "\"Test21d\"=hex:11,22,33,4\\\n"
+ "4,55,66,77,88\n"
+ "\"Test21e\"=hex:11,22,33,4\\\n"
+ " 4,55,66,77,88\n"
+ "\"Test21f\"=hex:11,22,33,\\;comment\n"
+ " 44,55,66,\\#comment\n"
+ " 77,88\n\n");
+ verify_reg_nonexist(hkey, "Test21a");
+ verify_reg_nonexist(hkey, "Test21b");
+ verify_reg_nonexist(hkey, "Test21c");
+ verify_reg_nonexist(hkey, "Test21d");
+ verify_reg_nonexist(hkey, "Test21e");
+ verify_reg_nonexist(hkey, "Test21f");
+
+ /* Test support for characters greater than 0xff */
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine22a\"=hex(0):25,50,100,54,48,25,00\n"
+ "\"Wine22b\"=hex(0):25,1a4,100,164,124,25,00\n\n");
+ verify_reg_nonexist(hkey, "Wine22a");
+ verify_reg_nonexist(hkey, "Wine22b");
+
+ /* Test the effect of backslashes in hex data */
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine23a\"=hex(2):25,00,48\\,00,4f,00,4d,00,45,00,25,00,00,00\n"
+ "\"Wine23b\"=hex(2):25,00,48,00,\\4f,00,4d,00,45,00,25,00,00,00\n"
+ "\"Wine23c\"=hex(2):25,00,48\\ ,00,4f,00,4d,00,45,00,25,00,00,00\n"
+ "\"Wine23d\"=hex(2):25,00,48,00,\\ 4f,00,4d,00,45,00,25,00,00,00\n"
+ "\"Wine23e\"=hex(2):\\25,00,48,00,4f,00,4d,00,45,00,25,00,00,00\n"
+ "\"Wine23f\"=hex(2):\\ 25,00,48,00,4f,00,4d,00,45,00,25,00,00,00\n"
+ "\"Wine23g\"=hex(2):25,00,48,00,4\\f,00,4d,00,45,00,25,00,00,00\n"
+ "\"Wine23h\"=hex(2):25,00,48,00,4\\\n"
+ " f,00,4d,00,45,00,25,00,00,00\n"
+ "\"Wine23i\"=hex(2):25,00,50,00,\\,41,00,54,00,48,00,25,00,00,00\n"
+ "\"Wine23j\"=hex(2):25,00,48,00,4f,00,4d,00,45,00,25,00,5c,00,\\\\\n"
+ " 25,00,50,00,41,00,54,00,48,00,25,00,00,00\n"
+ "\"Wine23k\"=hex(2):,\\\n"
+ " 25,00,48,00,4f,00,4d,00,45,00,25,00,00,00\n\n");
+ verify_reg_nonexist(hkey, "Wine23a");
+ verify_reg_nonexist(hkey, "Wine23b");
+ verify_reg_nonexist(hkey, "Wine23c");
+ verify_reg_nonexist(hkey, "Wine23d");
+ verify_reg_nonexist(hkey, "Wine23e");
+ verify_reg_nonexist(hkey, "Wine23f");
+ verify_reg_nonexist(hkey, "Wine23g");
+ verify_reg_nonexist(hkey, "Wine23h");
+ verify_reg_nonexist(hkey, "Wine23i");
+ verify_reg_nonexist(hkey, "Wine23j");
+ verify_reg_nonexist(hkey, "Wine23k");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine24a\"=hex(2):4c,00,69,00,6e,00,65,00,20,00,\\\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "\\Subkey1]\n");
+ verify_reg_nonexist(hkey, "Wine24a");
+ verify_key_nonexist(hkey, "Subkey1");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine24b\"=hex(2):4c,00,69,00,6e,00,65,00,20,00\\\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "\\Subkey2]\n");
+ verify_reg_nonexist(hkey, "Wine24b");
+ verify_key(hkey, "Subkey2");
+
+ lr = RegDeleteKeyA(hkey, "Subkey2");
+ ok(lr == ERROR_SUCCESS, "RegDeleteKey failed: %u\n", lr);
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine25a\"=hex(2):4c,00,69,00,6e,00,65,00,20,00,\\\n"
+ "\"Wine25b\"=\"Test value\"\n"
+
+ "\"Wine25c\"=hex(2):4c,00,69,00,6e,00,65,00,20,00,\\\n"
+ ";comment\n"
+ "\"Wine25d\"=\"Test value\"\n"
+
+ "\"Wine25e\"=hex(2):4c,00,69,00,6e,00,65,00,20,00,\\\n"
+ "#comment\n"
+ "\"Wine25f\"=\"Test value\"\n"
+
+ "\"Wine25g\"=hex(2):4c,00,69,00,6e,00,65,00,20,00,\\\n\n"
+ "\"Wine25h\"=\"Test value\"\n"
+
+ "\"Wine25i\"=hex(2):4c,00,69,00,6e,00,65,00,20,00\\\n"
+ "\"Wine25j\"=\"Test value\"\n\n");
+ verify_reg_nonexist(hkey, "Wine25a");
+ verify_reg_nonexist(hkey, "Wine25b");
+ verify_reg_nonexist(hkey, "Wine25c");
+ verify_reg_nonexist(hkey, "Wine25d");
+ verify_reg_nonexist(hkey, "Wine25e");
+ verify_reg(hkey, "Wine25f", REG_SZ, "Test value", 11, 0);
+ verify_reg_nonexist(hkey, "Wine25g");
+ verify_reg_nonexist(hkey, "Wine25h");
+ verify_reg_nonexist(hkey, "Wine25i");
+ verify_reg(hkey, "Wine25j", REG_SZ, "Test value", 11, 0);
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine26a\"=hex(2):4c,00,69,00,6e,00,65,00,20,00,\\\n"
+ "\"Wine26b\"=dword:00000008\n"
+
+ "\"Wine26c\"=hex(2):4c,00,69,00,6e,00,65,00,20,00,\\\n"
+ ";comment\n"
+ "\"Wine26d\"=dword:00000008\n"
+
+ "\"Wine26e\"=hex(2):4c,00,69,00,6e,00,65,00,20,00,\\\n"
+ "#comment\n"
+ "\"Wine26f\"=dword:00000008\n"
+
+ "\"Wine26g\"=hex(2):4c,00,69,00,6e,00,65,00,20,00,\\\n\n"
+ "\"Wine26h\"=dword:00000008\n"
+
+ "\"Wine26i\"=hex(2):4c,00,69,00,6e,00,65,00,20,00\\\n"
+ "\"Wine26j\"=dword:00000008\n\n");
+ verify_reg_nonexist(hkey, "Wine26a");
+ verify_reg_nonexist(hkey, "Wine26b");
+ verify_reg_nonexist(hkey, "Wine26c");
+ verify_reg_nonexist(hkey, "Wine26d");
+ verify_reg_nonexist(hkey, "Wine26e");
+ verify_reg(hkey, "Wine26f", REG_DWORD, &dword, sizeof(dword), 0);
+ verify_reg_nonexist(hkey, "Wine26g");
+ verify_reg_nonexist(hkey, "Wine26h");
+ verify_reg_nonexist(hkey, "Wine26i");
+ verify_reg(hkey, "Wine26j", REG_DWORD, &dword, sizeof(dword), 0);
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine27a\"=hex(2):25,00,48,00,4f,00,4d,00,45,00,25,00,5c,00,\\\n"
+ "\"Wine27b\"=hex(2):25,00,50,00,41,00,54,00,48,00,25,00,00,00\n"
+
+ "\"Wine27c\"=hex(2):25,00,48,00,4f,00,4d,00,45,00,25,00,5c,00,\\\n"
+ ";comment\n"
+ "\"Wine27d\"=hex(2):25,00,50,00,41,00,54,00,48,00,25,00,00,00\n"
+
+ "\"Wine27e\"=hex(2):25,00,48,00,4f,00,4d,00,45,00,25,00,5c,00,\\\n"
+ "#comment\n"
+ "\"Wine27f\"=hex(2):25,00,50,00,41,00,54,00,48,00,25,00,00,00\n"
+
+ "\"Wine27g\"=hex(2):25,00,48,00,4f,00,4d,00,45,00,25,00,5c,00,\\\n\n"
+ "\"Wine27h\"=hex(2):25,00,50,00,41,00,54,00,48,00,25,00,00,00\n"
+
+ "\"Wine27i\"=hex(2):25,00,48,00,4f,00,4d,00,45,00,25,00,5c,00\\\n"
+ "\"Wine27j\"=hex(2):25,00,50,00,41,00,54,00,48,00,25,00,00,00\n\n");
+ verify_reg_nonexist(hkey, "Wine27a");
+ verify_reg_nonexist(hkey, "Wine27b");
+ verify_reg_nonexist(hkey, "Wine27c");
+ verify_reg_nonexist(hkey, "Wine27d");
+ verify_reg_nonexist(hkey, "Wine27e");
+ verify_reg(hkey, "Wine27f", REG_EXPAND_SZ, "%PATH%", 7, 0);
+ verify_reg_nonexist(hkey, "Wine27g");
+ verify_reg_nonexist(hkey, "Wine27h");
+ verify_reg_nonexist(hkey, "Wine27i");
+ verify_reg(hkey, "Wine27j", REG_EXPAND_SZ, "%PATH%", 7, 0);
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine28a\"=hex(2):4c,00,69,00,6e,00,65,00,20,00,\\\n"
+ "@=\"Default value 1\"\n\n");
+ verify_reg_nonexist(hkey, "Wine28a");
+ verify_reg_nonexist(hkey, NULL);
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine28b\"=hex(2):4c,00,69,00,6e,00,65,00,20,00,\\\n"
+ ";comment\n"
+ "@=\"Default value 2\"\n\n");
+ verify_reg_nonexist(hkey, "Wine28b");
+ verify_reg_nonexist(hkey, NULL);
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine28c\"=hex(2):4c,00,69,00,6e,00,65,00,20,00,\\\n"
+ "#comment\n"
+ "@=\"Default value 3\"\n\n");
+ verify_reg_nonexist(hkey, "Wine28c");
+ verify_reg(hkey, NULL, REG_SZ, "Default value 3", 16, 0);
+
+ lr = RegDeleteValueW(hkey, NULL);
+ ok(lr == ERROR_SUCCESS, "RegDeleteValue failed: %u\n", lr);
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine28d\"=hex(2):4c,00,69,00,6e,00,65,00,20,00,\\\n\n"
+ "@=\"Default value 4\"\n\n");
+ verify_reg_nonexist(hkey, "Wine28d");
+ verify_reg_nonexist(hkey, NULL);
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine28e\"=hex(2):4c,00,69,00,6e,00,65,00,20,00\\\n"
+ "@=\"Default value 5\"\n\n");
+ verify_reg_nonexist(hkey, "Wine28e");
+ verify_reg(hkey, NULL, REG_SZ, "Default value 5", 16, 0);
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine29a\"=hex:11,22,33,\\\n"
+ "\\\n"
+ " 44,55,66\n"
+ "\"Wine29b\"=hex:11,22,33,\\\n"
+ " \\\n"
+ " 44,55,66\n\n");
+ verify_reg_nonexist(hkey, "Wine29a");
+ verify_reg_nonexist(hkey, "Wine29b");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine30a\"=hex(0):25,48,4f,4d,45,25,5c,/\n"
+ " 25,50,41,54,48,25,00\n"
+ "\"Wine30b\"=hex(0):25,48,4f,4d,45,25,5c/\n"
+ " 25,50,41,54,48,25,00\n\n");
+ verify_reg_nonexist(hkey, "Wine30a");
+ verify_reg_nonexist(hkey, "Wine30b");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine31\"=hex(7):4c,00,69,00,6e,00,65,00,20,00\\");
+ verify_reg_nonexist(hkey, "Wine31");
+
+ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine32a\"=hex(7):4c,00,69,00,6e,00,65,00,20,00,\\\n"
+ " ,63,00,6f,00,6e,00,63,00,61,00,74,00,\\\n"
+ " 65,00,6e,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n"
+ "\"Wine32b\"=hex(7):4c,00,69,00,6e,00,65,00,20,00,\\\n"
+ " 63,00,,6f,00,6e,00,63,00,61,00,74,00,\\\n"
+ " 65,00,6e,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n");
+ verify_reg_nonexist(hkey, "Wine32a");
+ verify_reg_nonexist(hkey, "Wine32b");
+
+ RegCloseKey(hkey);
+
+ lr = RegDeleteKeyA(HKEY_CURRENT_USER, KEY_BASE);
+ ok(lr == ERROR_SUCCESS, "RegDeleteKeyA failed: %d\n", lr);
+}
+
static void test_invalid_import_31(void)
{
HKEY hkey;
@@ -2758,6 +3267,7 @@ START_TEST(regedit)
test_basic_import_unicode();
test_basic_import_31();
test_invalid_import();
+ test_invalid_import_unicode();
test_invalid_import_31();
test_comments();
test_comments_unicode();
--
2.14.1
More information about the wine-patches
mailing list