From: Frank Sorenson <sorenson@redhat.com>
To: linux-nfs@vger.kernel.org
Cc: Steve Dickson <steved@redhat.com>
Subject: fix mountd netgroup lookup for short hostnames
Date: Mon, 14 Dec 2015 17:15:37 -0500 (EST) [thread overview]
Message-ID: <371875408.30231785.1450131337790.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <1054854128.30230518.1450131093639.JavaMail.zimbra@redhat.com>
Commit 9a92ef6f194926904b1289e0ce1daecb42bd5e8b to add netgroup
lookup of resolvable IP addresses inadvertently broke the
netgroup check for short hostnames by clobbering the 'hname'
variable.
This patch fixes that breakage by changing the IP address
lookup to use a separate variable. The 'hname' variable
used in the short hostname lookup is now untouched in
the IP lookup code.
Author: Frank Sorenson <sorenson@redhat.com>
Date: Mon Dec 14 15:50:30 2015 -0600
mountd: fix netgroup lookup for short hostnames
Commit 9a92ef6f194926904b1289e0ce1daecb42bd5e8b to add netgroup
lookup of resolvable IP addresses inadvertently broke the
netgroup check for short hostnames.
This patch fixes that breakage by changing the IP address
lookup to use a separate variable.
Signed-off-by: Frank Sorenson <sorenson@redhat.com>
diff --git a/support/export/client.c b/support/export/client.c
index af9e6bb..2346f99 100644
--- a/support/export/client.c
+++ b/support/export/client.c
@@ -639,7 +639,7 @@ check_netgroup(const nfs_client *clp, const struct addrinfo *ai)
const char *netgroup = clp->m_hostname + 1;
struct addrinfo *tmp = NULL;
struct hostent *hp;
- char *dot, *hname;
+ char *dot, *hname, *ip;
int i, match;
match = 0;
@@ -687,19 +687,16 @@ check_netgroup(const nfs_client *clp, const struct addrinfo *ai)
}
/* check whether the IP itself is in the netgroup */
- for (tmp = (struct addrinfo *)ai ; tmp != NULL ; tmp = tmp->ai_next) {
- free(hname);
- hname = calloc(INET6_ADDRSTRLEN, 1);
-
- if (inet_ntop(tmp->ai_family, &(((struct sockaddr_in *)tmp->ai_addr)->sin_addr), hname, INET6_ADDRSTRLEN) != hname) {
- xlog(D_GENERAL, " %s: unable to inet_ntop addrinfo %p: %m", __func__, tmp, errno);
- goto out;
- }
- if (innetgr(netgroup, hname, NULL, NULL)) {
+ ip = calloc(INET6_ADDRSTRLEN, 1);
+ if (inet_ntop(ai->ai_family, &(((struct sockaddr_in *)ai->ai_addr)->sin_addr), ip, INET6_ADDRSTRLEN) == ip) {
+ if (innetgr(netgroup, ip, NULL, NULL)) {
+ free(hname);
+ hname = ip;
match = 1;
goto out;
}
}
+ free(ip);
/* Okay, strip off the domain (if we have one) */
dot = strchr(hname, '.');
next parent reply other threads:[~2015-12-14 22:15 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1054854128.30230518.1450131093639.JavaMail.zimbra@redhat.com>
2015-12-14 22:15 ` Frank Sorenson [this message]
2015-12-16 15:17 ` fix mountd netgroup lookup for short hostnames Steve Dickson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=371875408.30231785.1450131337790.JavaMail.zimbra@redhat.com \
--to=sorenson@redhat.com \
--cc=linux-nfs@vger.kernel.org \
--cc=steved@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox