[2/2] kernel32: Don't leak extrabuf when HeapReAlloc fails

André Hentschel nerv at dawncrow.de
Wed Jan 29 16:41:34 CST 2014


---
 dlls/kernel32/computername.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/dlls/kernel32/computername.c b/dlls/kernel32/computername.c
index 0c81ac0..43eecd3 100644
--- a/dlls/kernel32/computername.c
+++ b/dlls/kernel32/computername.c
@@ -83,10 +83,14 @@ static BOOL dns_gethostbyname ( char *name, int *size )
 
     while( extrabuf ) 
     {
+        char *newbuf;
         res = gethostbyname_r ( name, &hostentry, extrabuf, ebufsize, &host, &locerr );
         if( res != ERANGE ) break;
         ebufsize *= 2;
-        extrabuf = HeapReAlloc( GetProcessHeap(), 0, extrabuf, ebufsize ) ;
+        if (newbuf = HeapReAlloc( GetProcessHeap(), 0, extrabuf, ebufsize ))
+            extrabuf = newbuf;
+        else
+            break;
     }
 
     if ( res )
-- 
1.8.1.2




More information about the wine-patches mailing list