Ian Kent 9bf5a1
autofs-5.0.4 - clear rpc client on lookup fail
Ian Kent 9bf5a1
Ian Kent 9bf5a1
From: Ian Kent <raven@themaw.net>
Ian Kent 9bf5a1
Ian Kent 9bf5a1
If a name lookup failure occurs in create_tcp_client() or create_udp_client()
Ian Kent 9bf5a1
the client is destoryed and the file descriptor is closed at exit but the rpc
Ian Kent 9bf5a1
client isn't set to NULL. This leads to a subsequent SEGV when attempting to
Ian Kent 9bf5a1
use the invalid client.
Ian Kent 9bf5a1
---
Ian Kent 9bf5a1
Ian Kent 9bf5a1
 CHANGELOG      |    1 +
Ian Kent 9bf5a1
 lib/rpc_subs.c |    2 ++
Ian Kent 9bf5a1
 2 files changed, 3 insertions(+), 0 deletions(-)
Ian Kent 9bf5a1
Ian Kent 9bf5a1
Ian Kent 9bf5a1
diff --git a/CHANGELOG b/CHANGELOG
Ian Kent 9bf5a1
index 00b455e..91edd14 100644
Ian Kent 9bf5a1
--- a/CHANGELOG
Ian Kent 9bf5a1
+++ b/CHANGELOG
Ian Kent 9bf5a1
@@ -34,6 +34,7 @@
Ian Kent 9bf5a1
 - fix file map lookup when reading included or nsswitch sources.
Ian Kent 9bf5a1
 - use misc device ioctl interface by default, if available.
Ian Kent 9bf5a1
 - fix call restorecon when misc device file doesn't exist.
Ian Kent 9bf5a1
+- clear rpc client on lookup fail.
Ian Kent 9bf5a1
 
Ian Kent 9bf5a1
 4/11/2008 autofs-5.0.4
Ian Kent 9bf5a1
 -----------------------
Ian Kent 9bf5a1
diff --git a/lib/rpc_subs.c b/lib/rpc_subs.c
Ian Kent 9bf5a1
index a822f1f..d034b29 100644
Ian Kent 9bf5a1
--- a/lib/rpc_subs.c
Ian Kent 9bf5a1
+++ b/lib/rpc_subs.c
Ian Kent 9bf5a1
@@ -346,6 +346,7 @@ static CLIENT *create_udp_client(struct conn_info *info)
Ian Kent 9bf5a1
 	if (ret) {
Ian Kent 9bf5a1
 		error(LOGOPT_ANY,
Ian Kent 9bf5a1
 		      "hostname lookup failed: %s", gai_strerror(ret));
Ian Kent 9bf5a1
+		info->client = NULL;
Ian Kent 9bf5a1
 		goto out_close;
Ian Kent 9bf5a1
 	}
Ian Kent 9bf5a1
 
Ian Kent 9bf5a1
@@ -470,6 +471,7 @@ static CLIENT *create_tcp_client(struct conn_info *info)
Ian Kent 9bf5a1
 	if (ret) {
Ian Kent 9bf5a1
 		error(LOGOPT_ANY,
Ian Kent 9bf5a1
 		      "hostname lookup failed: %s", gai_strerror(ret));
Ian Kent 9bf5a1
+		info->client = NULL;
Ian Kent 9bf5a1
 		goto out_close;
Ian Kent 9bf5a1
 	}
Ian Kent 9bf5a1