SCCS-vsn: sys/nfs/nfs_serv.c 7.65
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)nfs_serv.c 7.64 (Berkeley) %G%
+ * @(#)nfs_serv.c 7.65 (Berkeley) %G%
nfsm_srvstrsiz(cnt, NFS_MAXDATA);
if (error = nfsrv_fhtovp(fhp, TRUE, &vp, cred, nfsd->nd_slp, nam, &rdonly))
nfsm_reply(0);
nfsm_srvstrsiz(cnt, NFS_MAXDATA);
if (error = nfsrv_fhtovp(fhp, TRUE, &vp, cred, nfsd->nd_slp, nam, &rdonly))
nfsm_reply(0);
+ if (vp->v_type != VREG) {
+ error = (vp->v_type == VDIR) ? EISDIR : EACCES;
+ vput(vp);
+ nfsm_reply(0);
+ }
nqsrv_getl(vp, NQL_READ);
if ((error = nfsrv_access(vp, VREAD, cred, rdonly, nfsd->nd_procp)) &&
(error = nfsrv_access(vp, VEXEC, cred, rdonly, nfsd->nd_procp))) {
nqsrv_getl(vp, NQL_READ);
if ((error = nfsrv_access(vp, VREAD, cred, rdonly, nfsd->nd_procp)) &&
(error = nfsrv_access(vp, VEXEC, cred, rdonly, nfsd->nd_procp))) {
}
if (error = nfsrv_fhtovp(fhp, TRUE, &vp, cred, nfsd->nd_slp, nam, &rdonly))
nfsm_reply(0);
}
if (error = nfsrv_fhtovp(fhp, TRUE, &vp, cred, nfsd->nd_slp, nam, &rdonly))
nfsm_reply(0);
+ if (vp->v_type != VREG) {
+ error = (vp->v_type == VDIR) ? EISDIR : EACCES;
+ vput(vp);
+ nfsm_reply(0);
+ }
nqsrv_getl(vp, NQL_WRITE);
if (error = nfsrv_access(vp, VWRITE, cred, rdonly, nfsd->nd_procp)) {
vput(vp);
nqsrv_getl(vp, NQL_WRITE);
if (error = nfsrv_access(vp, VWRITE, cred, rdonly, nfsd->nd_procp)) {
vput(vp);