summaryrefslogtreecommitdiffstats
path: root/sys/nfsserver
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2008-11-12 09:38:18 +0000
committerdfr <dfr@FreeBSD.org>2008-11-12 09:38:18 +0000
commit743ba239e728899a9474cbc905b78a54cdc2484a (patch)
tree8da9a90ace7c469d07bff9b3a7e72b2fab0276da /sys/nfsserver
parentdd7b0d73e4869243d38070de6fcbf0c089c90ae9 (diff)
downloadFreeBSD-src-743ba239e728899a9474cbc905b78a54cdc2484a.zip
FreeBSD-src-743ba239e728899a9474cbc905b78a54cdc2484a.tar.gz
Turn (NFSERR_AUTHERR|code) status values into svcerr_auth(rqst, code) replies
instead of returning a success with a bogus NFS error code.
Diffstat (limited to 'sys/nfsserver')
-rw-r--r--sys/nfsserver/nfs_srvkrpc.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/nfsserver/nfs_srvkrpc.c b/sys/nfsserver/nfs_srvkrpc.c
index 9d6ea9f..1cea465 100644
--- a/sys/nfsserver/nfs_srvkrpc.c
+++ b/sys/nfsserver/nfs_srvkrpc.c
@@ -388,8 +388,13 @@ nfssvc_program(struct svc_req *rqst, SVCXPRT *xprt)
svc_freereq(rqst);
return;
}
- if (!svc_sendreply_mbuf(rqst, mrep))
- svcerr_systemerr(rqst);
+ if (nd.nd_repstat & NFSERR_AUTHERR) {
+ svcerr_auth(rqst, nd.nd_repstat & ~NFSERR_AUTHERR);
+ m_freem(mrep);
+ } else {
+ if (!svc_sendreply_mbuf(rqst, mrep))
+ svcerr_systemerr(rqst);
+ }
svc_freereq(rqst);
}
OpenPOWER on IntegriCloud