From 4481f5d69e1c591a52fb02a39569976a2ebd90b5 Mon Sep 17 00:00:00 2001 From: chegar Date: Wed, 24 Oct 2012 21:20:40 +0100 Subject: [PATCH] 8000203: File descriptor leak in src/solaris/native/java/net/net_util_md.c Reviewed-by: dsamersoff, khazra, chegar Contributed-by: John Zavgren --- src/solaris/native/java/net/net_util_md.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/solaris/native/java/net/net_util_md.c b/src/solaris/native/java/net/net_util_md.c index 7df6f3e98..c700cfd0b 100644 --- a/src/solaris/native/java/net/net_util_md.c +++ b/src/solaris/native/java/net/net_util_md.c @@ -546,6 +546,7 @@ static void initLoopbackRoutes() { char dest_str[40]; struct in6_addr dest_addr; char device[16]; + struct loopback_route *loRoutesTemp; if (loRoutes != 0) { free (loRoutes); @@ -606,11 +607,15 @@ static void initLoopbackRoutes() { continue; } else { if (nRoutes == loRoutes_size) { - loRoutes = realloc (loRoutes, loRoutes_size * - sizeof (struct loopback_route) * 2); - if (loRoutes == 0) { - return ; + loRoutesTemp = realloc (loRoutes, loRoutes_size * + sizeof (struct loopback_route) * 2); + + if (loRoutesTemp == 0) { + free(loRoutes); + fclose (f); + return; } + loRoutes=loRoutesTemp; loRoutes_size *= 2; } memcpy (&loRoutes[nRoutes].addr,&dest_addr,sizeof(struct in6_addr)); -- GitLab