Commit Graph

222 Commits

Author SHA1 Message Date
Hugh McMaster e336c86359 regedit: Skip blank and whitespace-only lines during hex data concatenation.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-07-04 19:49:49 +02:00
Hugh McMaster 6ffa89ebd3 regedit: Skip lines that do not begin with a hexadecimal character during hex data concatenation.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-07-04 19:49:42 +02:00
Hugh McMaster 50caf838b6 regedit: Simplify a while loop for skipping whitespace.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-07-04 19:49:32 +02:00
Hugh McMaster 032d32f940 regedit: Improve the parsing of multiline hex data during the registry import operation.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-07-03 15:57:44 +02:00
Hugh McMaster c750c2a98d regedit: Remove un-necessary parser state assignment if we are returning to the same state.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-07-03 15:57:44 +02:00
Hugh McMaster 758340a6e1 regedit: Free the buffer and reset data information on error and after setting the value.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-26 18:19:09 +02:00
Hugh McMaster 8803b9616b regedit: Fail when parsing any hex data type that is greater than ULONG_MAX on Windows.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-21 19:15:12 +02:00
Hugh McMaster e3234f6ede regedit: Use a generic data type to correctly process all data types.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-20 18:43:30 +02:00
Hugh McMaster 1f08ee2453 regedit: Allow the deletion of registry keys beginning with a lowercase 'H'.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-16 15:25:38 +02:00
Hugh McMaster f535341d2b regedit: Use a case insensitive comparison when parsing registry classes from registry file versions 4 and 5.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-16 15:25:37 +02:00
Hugh McMaster 8504a1563d regedit: Free the memory used by the REG_DWORD and hex data types after saving the registry value.
We use a BOOL to handle all hex types, including those that are undefined (e.g.0x100).

Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-16 15:25:37 +02:00
Hugh McMaster a1924ae2da regedit: Export hex data types without warning about unsupported data types.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-16 15:25:37 +02:00
Hugh McMaster 300df08e70 regedit: Remove an unused #define.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-16 15:22:07 +02:00
Hugh McMaster 191b81dbd3 regedit: Add data parsing operations to the state machine.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-15 21:54:38 +02:00
Hugh McMaster d60c31eadb regedit: Perform value name operations in the state machine.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-15 18:51:08 +02:00
Hugh McMaster ca98e23451 regedit: Perform key operations in the state machine.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-15 18:51:08 +02:00
Hugh McMaster ec87800856 regedit: Introduce a partial state machine for importing registry data.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-15 18:51:08 +02:00
Hugh McMaster afde1624ca regedit: Do not use REG_NONE as the default data type if strtoulW() fails.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-08 16:44:58 +02:00
Hugh McMaster 5669282e1d regedit: Do not create registry keys that end without a closing bracket.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-08 16:44:58 +02:00
Hugh McMaster 27b2519ca4 regedit: Re-implement favourite registry key handling.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-05 11:12:32 +02:00
Nikolay Sivov 02b178e791 regedit: Fix a crash when exporting from top level key.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-18 16:17:48 +02:00
Hugh McMaster 82246874d2 regedit: Merge processRegLinesA/W() into their caller.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-05 14:12:18 +02:00
Hugh McMaster e8f0a8b38b regedit: Merge header checks from processRegLinesA/W() to their caller.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-05 14:12:18 +02:00
Hugh McMaster 8753a1b271 regedit: Use a function pointer to read each registry line instead of calling get_lineA/W() directly.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-03 22:58:02 +02:00
Hugh McMaster 76b9e6c712 regedit: Return a Unicode line from get_lineA().
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-03 22:58:02 +02:00
Hugh McMaster 6b596ecf9e regedit: Simplify clean-up in get_lineA/W().
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-03 22:58:02 +02:00
Hugh McMaster 2392743146 regedit: Re-implement processSetValue().
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-25 20:53:07 +02:00
Hugh McMaster 9aff5c88ad regedit: Validate REG_SZ import data before processing it any further.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-25 20:53:07 +02:00
Hugh McMaster 0481f31d4c regedit: Simplify parseKeyName.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-25 20:53:07 +02:00
Hugh McMaster 0a71d4fa72 regedit: Re-implement convertHexToDWord().
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-11 15:55:24 +02:00
Hugh McMaster aacae19602 regedit: Skip any leading spaces and tabs that may be present in the line being parsed.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-03 14:09:49 +02:00
Hugh McMaster 9ea9874abf regedit: Remove unused #define.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-31 14:03:56 +02:00
Hugh McMaster 9ad4152e6d regedit: Make "Unknown Type" translatable.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-30 22:06:33 +02:00
Hugh McMaster 6d89696121 regedit: Do not use REG_NONE as the default data type on import error.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-29 08:47:20 +02:00
Hugh McMaster 523a61da85 regedit: Remove data types that cannot be imported and clean-up data_types array.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-29 08:47:18 +02:00
Hugh McMaster 0a7ff8aff7 regedit: Accept various forms of "REGEDIT" with trailing characters.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-22 16:28:50 +01:00
Hugh McMaster 5052a759b3 regedit: Return success or failure from import functions.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-22 16:28:10 +01:00
Hugh McMaster f56d919ffe regedit: Re-implement processRegLinesA().
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-22 16:25:01 +01:00
Hugh McMaster e1e79d12b3 regedit: Parse UTF-16 file header for validation.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-22 16:23:49 +01:00
Hugh McMaster 6b6e2cb924 regedit: Re-implement processRegLinesW().
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-20 19:42:18 +01:00
Zebediah Figura 679cc50195 regedit: When processing 3.1 ignore any lines that don't begin with HKCR.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-31 22:30:38 +01:00
Zebediah Figura b0d475b858 regedit: Add support for importing Win 3.1 registry files.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-30 21:38:53 +01:00
Hugh McMaster c39ee374a7 regedit: Close the registry key handle in the read function instead of the parser.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-10-25 13:39:32 +02:00
Hugh McMaster 93f795950d regedit: Do not close the registy key handle when a line break is encountered.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-10-25 13:39:27 +02:00
Hugh McMaster 4cb93f4557 regedit: Do not set s_eol to NULL when it will be re-assigned immediately.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-09-01 20:47:43 +09:00
Hugh McMaster b4d40846dd regedit: Remove two 'continue' statements from the end of two 'while' loops.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-09-01 20:47:39 +09:00
Alexandre Julliard b90628c15e regedit: Don't die if we fail to open a key during exporting.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-11 14:19:42 +09:00
Hugh McMaster 2b74ef1006 regedit: Output the registry data type as a string when it is used in error messages.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-21 23:36:04 +09:00
Hugh McMaster bb2c799f36 regedit: Use generic ARRAY_SIZE macro to allow for broader use.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-21 23:36:03 +09:00
Hugh McMaster 3763c7a610 regedit: Rewrite processRegLinesA into an ANSI version of processRegLinesW.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-21 23:36:03 +09:00
Hugh McMaster fec0b697c7 regedit: Use Unicode for registry key paths.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-15 21:46:34 +09:00
Hugh McMaster 7c824cbfd4 regedit: Open export file with a wide-character stream.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-15 21:42:09 +09:00
Hugh McMaster 86ebd5eee0 regedit: Use Unicode when printing system error messages.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-15 21:41:52 +09:00
Hugh McMaster 8dfc25ea9e regedit: Use output_message() in regproc.c for better internationalization.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-15 21:41:28 +09:00
Francois Gouget f099d0b197 regedit: Make GetwideString() static.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-07 11:16:02 +09:00
Hugh McMaster 493b5aab22 regedit: Hard-code "regedit" instead of passing getAppName() as an argument.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-23 22:51:31 +09:00
Jiaxing Wang ebacf05258 regedit: Need 3 bytes of room at end of buffer for \r\n\0 to avoid endless loop.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-26 23:58:28 +09:00
Jiaxing Wang a53371497f regedit: Avoid appending '\0' to string value of imported key. 2015-05-20 18:32:47 +09:00
Sebastian Lackner fb37d215cd regedit: Fix incorrect usage of CompareString in parseKeyName. 2014-11-19 23:36:35 +09:00
Bruno Jesus 84d7239640 regedit: Allow importing/exporting strings with '\r'. 2014-10-30 12:00:38 +09:00
Bruno Jesus c35bca6561 regedit: Allow importing strings with escaped NULL. 2014-10-29 20:31:10 +09:00
Bruno Jesus 01b0746906 regedit: Append exported strings using the correct size. 2014-10-28 14:54:12 +09:00
Bruno Jesus 0d3807dbc5 regedit: Fix qword entries export. 2012-05-17 10:18:54 +02:00
Bruno Jesus 1fba4a6886 regedit: Allows semicolon comments. 2012-04-27 12:01:48 +02:00
Ilya Basin f900ed1474 regedit: Fix buffer size when exporting binary values. 2012-04-12 20:38:52 +02:00
Alexandre Julliard 65dfc51b2e regedit: Don't use tchar.h. 2012-01-23 16:07:34 +01:00
Francois Gouget 5920de5ffb Assorted spelling and case fixes. 2011-05-09 12:09:27 +02:00
Andrew Nguyen 3e19c4ca3b regedit: Explicitly use ANSI functions in regedit helper functions. 2011-04-18 11:50:32 +02:00
Akihiro Sagawa 3c6de3b348 regedit: Export a decent newline in Unicode format. 2011-03-07 15:06:04 +01:00
Marcus Meissner 62f270e269 regedit: fgetc() gets int, not char (Coverity). 2011-02-23 18:22:35 +01:00
Andrew Nguyen 6c8f8a64b0 regedit: Remove an unused string array.
Spotted by Austin English with LLVM/Clang.
2011-01-21 13:40:46 +01:00
Andrew Eikum 06f4532cf6 regedit: Don't call ungetc() twice consecutively.
Spotted by Sylvain Hitier.
2010-08-23 15:41:53 +02:00
Andrew Eikum dcfdfbaa54 regedit: Improve importing of REG_SZ with invalid quoting. 2010-08-16 17:28:42 +02:00
Andrew Eikum 8851a4eb1f regedit: Process reg files which use \r line endings. 2010-08-02 13:58:19 +02:00
Andrew Eikum 4a6ed21094 regedit: Escape the value name portion during export. 2010-06-08 16:35:22 +02:00
Alexander Nicolaysen Sørnes dcade85261 regedit: Fix reading from stdin. 2009-06-17 12:04:03 +02:00
Jim Cameron 5bd7e306b4 regedit: Fix crash importing large values from Unicode. 2009-03-09 14:21:26 +01:00
Francois Gouget 5898a5c767 regedit: Make some functions static. 2009-01-26 15:13:21 +01:00
Erich Hoover 51a04d5b65 regedit: Fix import mangling REG_EXPAND_SZ values. 2009-01-19 13:36:26 +01:00
Michael Stefaniuc 683c53db42 regedit: Remove some superfluous casts. 2008-12-04 12:08:27 +01:00
Francois Gouget dfb823bb6f regedit: Deal with races in 'regedit /E' by resizing the buffers and retrying. 2008-12-01 12:57:39 +01:00
Michael Stefaniuc c75a143f3d regedit: Remove NULL check before HeapFree (Smatch). 2008-11-25 11:55:59 +01:00
Francois Gouget c880ccea1a regedit: Fix handling of zero-byte binary values for 'regedit /E'. 2008-11-24 13:43:47 +01:00
Francois Gouget be19acfbe8 regedit: Avoid wsprintfW() so we can avoid loading user32.dll for 'regedit /E'. 2008-11-21 10:00:47 +01:00
Francois Gouget a81bb704df regedit: Fix exporting of REG_EXPAND_SZ and other 'weird' strings.
REG_EXPAND_SZ must be exported as hexadecimal to preserve the string type.
0-byte strings and those missing a trailing '\0' or with odd sizes must 
be saved as hexadecimal too so they are restored as is.
Move the binary-value export code to the new REGPROC_export_binary() 
function.
2008-11-21 10:00:41 +01:00
Francois Gouget 3ef0b0ef2d regedit: Pass the string length to REGPROC_export_string().
We already know it in the caller so this saves us one lstrlenW() call.
2008-11-21 10:00:17 +01:00
Francois Gouget d92c976803 regedit: Fix a buffer allocation in export_registry_key().
This fixes a major buffer overflow bug in 'regedit /E'.
2008-11-21 10:00:13 +01:00
Francois Gouget 3b140ccb0e Assorted spelling fixes. 2008-11-17 16:04:39 +01:00
Francois Gouget e1901500ee regedit: Fix the wrapping of binary values in export_hkey().
Don't wait until the line overflows before wrapping it.
Don't wrap the last line.
2008-11-12 13:12:35 +01:00
Francois Gouget f0f91a69b3 regedit: Fix a buffer overflow when exporting binary values in export_hkey().
We must take the indentation into account to compute the number of lines a binary value will use.
2008-11-12 13:12:31 +01:00
Francois Gouget 7df7222594 regedit: Simplify / clean up export_hkey().
Avoid unneeded/redundant calls to lstrcatW() and lstrlenW().
Tighten the scope of variables.
2008-11-12 13:12:23 +01:00
Francois Gouget 126ffb1f8a regedit: Tighten a buffer size calculation. 2008-11-12 13:12:12 +01:00
Francois Gouget d1d3db4183 regedit: Simplify REGPROC_export_string(). 2008-11-12 13:12:09 +01:00
Francois Gouget 7f707b3037 regedit: The xxx_name_len variables track buffer sizes. That is they count the trailing '\0'. Adjust a couple of places that got this wrong and rename them to xxx_name_size. 2008-11-12 13:11:59 +01:00
Francois Gouget 5940ada80b regedit: line_size is supposed to track a string length.
That is it does not count the trailing '\0'.
Fix a few places that got this wrong and rename it to line_len.
2008-11-12 13:11:41 +01:00
Francois Gouget f982e731c5 regedit: Check that we were able to allocate line_buf too. 2008-11-12 13:11:30 +01:00
Francois Gouget 71af3e1582 regedit: Remove unneeded variable initializations. 2008-11-12 13:11:23 +01:00
Andrey Turkin ae097646ab regedit: Ignore spaces in regedit files. 2008-09-30 11:33:14 -05:00
Alexandre Julliard 700b5c6d7f regedit: Fix file exports in ASCII format. 2008-09-22 15:34:41 +02:00
Alexander Nicolaysen Sørnes 4f332e610e regedit: Fix some fprintf arguments. 2008-09-22 12:20:07 +02:00