summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@redhat.com>2012-05-03 15:09:09 -0400
committerSteve Dickson <steved@redhat.com>2012-05-03 15:12:10 -0400
commitbf6a4febaa78bf188896b7b5b02c46562dd08b70 (patch)
tree54ed00f2f28ff2d98871776be48b73cbb0026a90
parentc2544b77566690ebec32a2d47c9249548b1a0941 (diff)
downloadnfs-utils-bf6a4febaa78bf188896b7b5b02c46562dd08b70.tar.gz
nfs-utils-bf6a4febaa78bf188896b7b5b02c46562dd08b70.tar.xz
nfs-utils-bf6a4febaa78bf188896b7b5b02c46562dd08b70.zip
mountd: handle allocation failures in auth_unix_ip upcall
From: "J. Bruce Fields" <bfields@redhat.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r--utils/mountd/cache.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index 1ae96fe..7d80432 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -84,7 +84,6 @@ static void auth_unix_ip(FILE *f)
char ipaddr[INET6_ADDRSTRLEN];
char *client = NULL;
struct addrinfo *tmp = NULL;
- struct addrinfo *ai = NULL;
if (readline(fileno(f), &lbuf, &lbuflen) != 1)
return;
@@ -107,12 +106,16 @@ static void auth_unix_ip(FILE *f)
/* addr is a valid, interesting address, find the domain name... */
if (!use_ipaddr) {
+ struct addrinfo *ai = NULL;
+
ai = client_resolve(tmp->ai_addr);
+ if (ai == NULL)
+ goto out;
client = client_compose(ai);
freeaddrinfo(ai);
+ if (!client)
+ goto out;
}
- freeaddrinfo(tmp);
-
qword_print(f, "nfsd");
qword_print(f, ipaddr);
qword_printuint(f, time(0) + DEFAULT_TTL);
@@ -124,6 +127,9 @@ static void auth_unix_ip(FILE *f)
xlog(D_CALL, "auth_unix_ip: client %p '%s'", client, client?client: "DEFAULT");
free(client);
+out:
+ freeaddrinfo(tmp);
+
}
static void auth_unix_gid(FILE *f)