take symbolic link mode from the client as is done for files
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Tue, 2 Oct 1990 12:51:27 +0000 (04:51 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Tue, 2 Oct 1990 12:51:27 +0000 (04:51 -0800)
SCCS-vsn: sys/nfs/nfs_serv.c 7.29

usr/src/sys/nfs/nfs_serv.c

index 1abf910..178d2da 100644 (file)
@@ -7,7 +7,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)nfs_serv.c  7.28 (Berkeley) %G%
+ *     @(#)nfs_serv.c  7.29 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -873,6 +873,7 @@ nfsrv_symlink(mrep, md, dpos, cred, xid, mrq, repstat)
        register struct vattr *vap = &va;
        register u_long *p;
        register long t1;
        register struct vattr *vap = &va;
        register u_long *p;
        register long t1;
+       struct nfsv2_sattr *sp;
        caddr_t bpos;
        struct uio io;
        struct iovec iv;
        caddr_t bpos;
        struct uio io;
        struct iovec iv;
@@ -903,6 +904,7 @@ nfsrv_symlink(mrep, md, dpos, cred, xid, mrq, repstat)
        io.uio_segflg = UIO_SYSSPACE;
        io.uio_rw = UIO_READ;
        nfsm_mtouio(&io, len2);
        io.uio_segflg = UIO_SYSSPACE;
        io.uio_rw = UIO_READ;
        nfsm_mtouio(&io, len2);
+       nfsm_disect(sp, struct nfsv2_sattr *, NFSX_SATTR);
        *(pathcp + len2) = '\0';
        if (ndp->ni_vp) {
                VOP_ABORTOP(ndp);
        *(pathcp + len2) = '\0';
        if (ndp->ni_vp) {
                VOP_ABORTOP(ndp);
@@ -915,7 +917,7 @@ nfsrv_symlink(mrep, md, dpos, cred, xid, mrq, repstat)
                goto out;
        }
        VATTR_NULL(vap);
                goto out;
        }
        VATTR_NULL(vap);
-       vap->va_mode = 0777;
+       vap->va_mode = fxdr_unsigned(u_short, sp->sa_mode);
        error = VOP_SYMLINK(ndp, vap, pathcp);
 out:
        if (pathcp)
        error = VOP_SYMLINK(ndp, vap, pathcp);
 out:
        if (pathcp)