[PATCH] services: handle realloc failures better (Coverity)

Marcus Meissner marcus at jet.franken.de
Sat Jan 31 04:44:12 CST 2009


Hi,

CID 821, realloc can return NULL, this will break out
of the loop and later services_list being NULL will
be derefed.

Ciao, Marcus
---
 programs/services/services.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/programs/services/services.c b/programs/services/services.c
index 003771f..9bed784 100644
--- a/programs/services/services.c
+++ b/programs/services/services.c
@@ -242,10 +242,12 @@ static void scmdatabase_autostart_services(struct scmdatabase *db)
         {
             if (i+1 >= size)
             {
+                struct service_entry **slist_new;
                 size *= 2;
-                services_list = HeapReAlloc(GetProcessHeap(), 0, services_list, size * sizeof(services_list[0]));
-                if (!services_list)
+                slist_new = HeapReAlloc(GetProcessHeap(), 0, services_list, size * sizeof(services_list[0]));
+                if (!slist_new)
                     break;
+                services_list = slist_new;
             }
             services_list[i] = service;
             service->ref_count++;
-- 
1.5.6



More information about the wine-patches mailing list