vfs_export_lookup: Fix r324054
When using the default address list nam is still valid, the code in r324054 assumed that is was NULL. Reported by: Guy Yur <guyyur@gmail.com> Tested by: Guy Yur <guyyur@gmail.com>
This commit is contained in:
parent
7bd570a105
commit
13125fb720
@ -459,34 +459,33 @@ vfs_export_lookup(struct mount *mp, struct sockaddr *nam)
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* If no address is provided, use the default if it exists.
|
||||
* Lookup in the export list
|
||||
*/
|
||||
if (nam == NULL) {
|
||||
if ((mp->mnt_flag & MNT_DEFEXPORTED) != 0)
|
||||
return (&nep->ne_defexported);
|
||||
return (NULL);
|
||||
if (nam != NULL) {
|
||||
saddr = nam;
|
||||
rnh = NULL;
|
||||
switch (saddr->sa_family) {
|
||||
case AF_INET:
|
||||
rnh = nep->ne4;
|
||||
break;
|
||||
case AF_INET6:
|
||||
rnh = nep->ne6;
|
||||
break;
|
||||
}
|
||||
if (rnh != NULL) {
|
||||
RADIX_NODE_HEAD_RLOCK(rnh);
|
||||
np = (struct netcred *) (*rnh->rnh_matchaddr)(saddr, &rnh->rh);
|
||||
RADIX_NODE_HEAD_RUNLOCK(rnh);
|
||||
if (np != NULL && (np->netc_rnodes->rn_flags & RNF_ROOT) != 0)
|
||||
return (NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Lookup in the export list
|
||||
* If no address match, use the default if it exists.
|
||||
*/
|
||||
saddr = nam;
|
||||
rnh = NULL;
|
||||
switch (saddr->sa_family) {
|
||||
case AF_INET:
|
||||
rnh = nep->ne4;
|
||||
break;
|
||||
case AF_INET6:
|
||||
rnh = nep->ne6;
|
||||
break;
|
||||
}
|
||||
if (rnh != NULL) {
|
||||
RADIX_NODE_HEAD_RLOCK(rnh);
|
||||
np = (struct netcred *) (*rnh->rnh_matchaddr)(saddr, &rnh->rh);
|
||||
RADIX_NODE_HEAD_RUNLOCK(rnh);
|
||||
if (np != NULL && (np->netc_rnodes->rn_flags & RNF_ROOT) != 0)
|
||||
return (NULL);
|
||||
}
|
||||
if (np == NULL && (mp->mnt_flag & MNT_DEFEXPORTED) != 0)
|
||||
return (&nep->ne_defexported);
|
||||
|
||||
return (np);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user