[PATCH] reg: Handle memory allocation failures in run_delete (cppcheck)

Alex Henrie alexhenrie24 at gmail.com
Wed Dec 22 02:00:40 CST 2021


Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
---
 programs/reg/delete.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/programs/reg/delete.c b/programs/reg/delete.c
index cf0108664fd..344fb6614c5 100644
--- a/programs/reg/delete.c
+++ b/programs/reg/delete.c
@@ -87,9 +87,14 @@ static int run_delete(HKEY root, WCHAR *path, REGSAM sam, WCHAR *key_name, WCHAR
     if (value_all)
     {
         DWORD max_value_len = 256, value_len;
-        WCHAR *value_name;
+        WCHAR *value_name, *new_value_name;
 
         value_name = malloc(max_value_len * sizeof(WCHAR));
+        if (!value_name)
+        {
+            output_error(ERROR_NOT_ENOUGH_MEMORY);
+            return 1;
+        }
 
         while (1)
         {
@@ -110,7 +115,13 @@ static int run_delete(HKEY root, WCHAR *path, REGSAM sam, WCHAR *key_name, WCHAR
             else if (rc == ERROR_MORE_DATA)
             {
                 max_value_len *= 2;
-                value_name = realloc(value_name, max_value_len * sizeof(WCHAR));
+                new_value_name = realloc(value_name, max_value_len * sizeof(WCHAR));
+                if (!new_value_name)
+                {
+                    output_error(ERROR_NOT_ENOUGH_MEMORY);
+                    return 1;
+                }
+                value_name = new_value_name;
             }
             else break;
         }
-- 
2.34.1




More information about the wine-devel mailing list