From 978df2e0310f0950e51f0cdf3e45fde546ea7cf0 Mon Sep 17 00:00:00 2001 From: Alex Henrie Date: Wed, 2 Feb 2022 00:23:18 -0700 Subject: [PATCH] ws2_32: Fix memory leak on error path in get_local_ips (cppcheck). Signed-off-by: Alex Henrie Signed-off-by: Alexandre Julliard --- dlls/ws2_32/protocol.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dlls/ws2_32/protocol.c b/dlls/ws2_32/protocol.c index 867e9513ca2..56b7379cccc 100644 --- a/dlls/ws2_32/protocol.c +++ b/dlls/ws2_32/protocol.c @@ -806,7 +806,7 @@ static struct hostent *get_local_ips( char *hostname ) IP_ADAPTER_INFO *adapters = NULL, *k; struct hostent *hostlist = NULL; MIB_IPFORWARDTABLE *routes = NULL; - struct route *route_addrs = NULL; + struct route *route_addrs = NULL, *new_route_addrs; DWORD adap_size, route_size, n; /* Obtain the size of the adapter list and routing table, also allocate memory */ @@ -852,9 +852,10 @@ static struct hostent *get_local_ips( char *hostname ) } if (exists) continue; - route_addrs = realloc( route_addrs, (numroutes + 1) * sizeof(struct route) ); - if (!route_addrs) + new_route_addrs = realloc( route_addrs, (numroutes + 1) * sizeof(struct route) ); + if (!new_route_addrs) goto cleanup; + route_addrs = new_route_addrs; route_addrs[numroutes].interface = ifindex; route_addrs[numroutes].metric = ifmetric; route_addrs[numroutes].default_route = ifdefault;