Hugh McMaster : regedit: Free the buffer and reset data information on error and after setting the value.

Alexandre Julliard julliard at winehq.org
Mon Jun 26 15:17:52 CDT 2017


Module: wine
Branch: master
Commit: 758340a6e1bc045fa4a7ba06b6da8e94243ee871
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=758340a6e1bc045fa4a7ba06b6da8e94243ee871

Author: Hugh McMaster <hugh.mcmaster at outlook.com>
Date:   Mon Jun 26 13:47:16 2017 +0000

regedit: Free the buffer and reset data information on error and after setting the value.

Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 programs/regedit/regproc.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c
index bc488d3..d6ea5c7 100644
--- a/programs/regedit/regproc.c
+++ b/programs/regedit/regproc.c
@@ -758,6 +758,9 @@ static WCHAR *string_data_state(struct parser *parser, WCHAR *pos)
     return line;
 
 invalid:
+    parser->data = NULL;
+    parser->data_size = 0;
+
     set_state(parser, LINE_START);
     return line;
 }
@@ -781,6 +784,7 @@ static WCHAR *dword_data_state(struct parser *parser, WCHAR *pos)
 invalid:
     HeapFree(GetProcessHeap(), 0, parser->data);
     parser->data = NULL;
+    parser->data_size = 0;
 
     set_state(parser, LINE_START);
     return line;
@@ -807,6 +811,10 @@ static WCHAR *hex_data_state(struct parser *parser, WCHAR *pos)
     return line;
 
 invalid:
+    HeapFree(GetProcessHeap(), 0, parser->data);
+    parser->data = NULL;
+    parser->data_size = 0;
+
     set_state(parser, LINE_START);
     return line;
 }
@@ -827,10 +835,10 @@ static WCHAR *set_value_state(struct parser *parser, WCHAR *pos)
                    parser->data, parser->data_size);
 
     if (parser->parse_type == REG_DWORD || parser->parse_type == REG_BINARY)
-    {
         HeapFree(GetProcessHeap(), 0, parser->data);
-        parser->data = NULL;
-    }
+
+    parser->data = NULL;
+    parser->data_size = 0;
 
     if (parser->reg_version == REG_VERSION_31)
         set_state(parser, PARSE_WIN31_LINE);




More information about the wine-cvs mailing list