- in nfs_mknodrpc - initialize the node we pass to nfs_lookitup. It's
authorart <art@openbsd.org>
Wed, 23 Jul 2008 11:53:07 +0000 (11:53 +0000)
committerart <art@openbsd.org>
Wed, 23 Jul 2008 11:53:07 +0000 (11:53 +0000)
   not just a return value, nfs_lookitup treats it specially when *npp
   is not NULL.
 - nfs_lookitup - When we match the file handle to the directory
   filehandle (lookup on '.'), initialize np so that we don't return
   stack garbage to the caller. The function shouldn't ever be
   called with '.' at this moment, but that's no reason to not do the
   right thing in case future callers use it that way.

blambert@ thib@ ok

sys/nfs/nfs_vnops.c

index f6eb3a7..2741ca3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: nfs_vnops.c,v 1.94 2008/07/06 16:54:48 thib Exp $     */
+/*     $OpenBSD: nfs_vnops.c,v 1.95 2008/07/23 11:53:07 art Exp $      */
 /*     $NetBSD: nfs_vnops.c,v 1.62.4.1 1996/07/08 20:26:52 jtc Exp $   */
 
 /*
@@ -1154,7 +1154,7 @@ nfs_mknodrpc(dvp, vpp, cnp, vap)
        u_int32_t *tl;
        int32_t t1;
        struct vnode *newvp = (struct vnode *)0;
-       struct nfsnode *np;
+       struct nfsnode *np = NULL;
        char *cp2;
        caddr_t dpos;
        int error = 0, wccflag = NFSV3_WCCRATTR, gotvp = 0;
@@ -2523,6 +2523,7 @@ nfs_lookitup(dvp, name, len, cred, procp, npp)
                } else if (NFS_CMPFH(dnp, nfhp, fhlen)) {
                    VREF(dvp);
                    newvp = dvp;
+                   np = dnp;
                } else {
                    error = nfs_nget(dvp->v_mount, nfhp, fhlen, &np);
                    if (error) {