40 lines
1.1 KiB
Diff
40 lines
1.1 KiB
Diff
autofs-5.1.0 - fix memory leak in create_client()
|
|
|
|
From: Ian Kent <raven@themaw.net>
|
|
|
|
In create_client(), if the target host is unreachable the function
|
|
exists without freeing the addrinfo data returned from getaddrinfo(3).
|
|
---
|
|
CHANGELOG | 1 +
|
|
lib/rpc_subs.c | 4 +++-
|
|
2 files changed, 4 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/CHANGELOG b/CHANGELOG
|
|
index d693bce..0cb1d36 100644
|
|
--- a/CHANGELOG
|
|
+++ b/CHANGELOG
|
|
@@ -23,6 +23,7 @@
|
|
- add mutex call return check in defaults.c.
|
|
- force disable browse mode for amd format maps.
|
|
- fix hosts map options check in lookup_amd_instance().
|
|
+- fix memory leak in create_client().
|
|
|
|
04/06/2014 autofs-5.1.0
|
|
=======================
|
|
diff --git a/lib/rpc_subs.c b/lib/rpc_subs.c
|
|
index 5d6ead0..846c40e 100644
|
|
--- a/lib/rpc_subs.c
|
|
+++ b/lib/rpc_subs.c
|
|
@@ -720,8 +720,10 @@ static int create_client(struct conn_info *info, CLIENT **client)
|
|
ret = rpc_do_create_client(haddr->ai_addr, info, &fd, client);
|
|
if (ret == 0)
|
|
break;
|
|
- if (ret == -EHOSTUNREACH)
|
|
+ if (ret == -EHOSTUNREACH) {
|
|
+ freeaddrinfo(ai);
|
|
goto out_close;
|
|
+ }
|
|
|
|
if (!info->client && fd != RPC_ANYSOCK) {
|
|
close(fd);
|