symlinks are OK if not being followed
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Sat, 22 Feb 1992 07:57:45 +0000 (23:57 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Sat, 22 Feb 1992 07:57:45 +0000 (23:57 -0800)
SCCS-vsn: sys/ufs/ffs/ufs_vnops.c 7.79
SCCS-vsn: sys/ufs/ufs/ufs_vnops.c 7.79

usr/src/sys/ufs/ffs/ufs_vnops.c
usr/src/sys/ufs/ufs/ufs_vnops.c

index 3b15247..076f951 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)ufs_vnops.c 7.78 (Berkeley) %G%
+ *     @(#)ufs_vnops.c 7.79 (Berkeley) %G%
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -677,9 +677,6 @@ relookup(dvp, vpp, cnp)
 #ifdef DIAGNOSTIC
                if (*vpp != NULL)
                        panic("leaf should be empty");
 #ifdef DIAGNOSTIC
                if (*vpp != NULL)
                        panic("leaf should be empty");
-#endif
-#ifdef NAMEI_DIAGNOSTIC
-               printf("not found\n");
 #endif
                if (cnp->cn_nameiop == LOOKUP || cnp->cn_nameiop == DELETE ||
                    error != ENOENT)
 #endif
                if (cnp->cn_nameiop == LOOKUP || cnp->cn_nameiop == DELETE ||
                    error != ENOENT)
@@ -702,26 +699,16 @@ relookup(dvp, vpp, cnp)
                 */
                return (0);
        }
                 */
                return (0);
        }
-#ifdef NAMEI_DIAGNOSTIC
-       printf("found\n");
-#endif
-
        dp = *vpp;
        dp = *vpp;
+
 #ifdef DIAGNOSTIC
        /*
         * Check for symbolic link
         */
 #ifdef DIAGNOSTIC
        /*
         * Check for symbolic link
         */
-       if (dp->v_type == VLNK) {
+       if (dp->v_type == VLNK && (cnp->cn_flags & FOLLOW))
                panic ("relookup: symlink found.\n");
                panic ("relookup: symlink found.\n");
-       };
-
-       /*
-        * Check to see if the vnode has been mounted on;
-        * if so find the root of the mounted file system.
-        */
 #endif
 
 #endif
 
-
 nextname:
        /*
         * Check for read-only file systems.
 nextname:
        /*
         * Check for read-only file systems.
index 3b15247..076f951 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)ufs_vnops.c 7.78 (Berkeley) %G%
+ *     @(#)ufs_vnops.c 7.79 (Berkeley) %G%
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -677,9 +677,6 @@ relookup(dvp, vpp, cnp)
 #ifdef DIAGNOSTIC
                if (*vpp != NULL)
                        panic("leaf should be empty");
 #ifdef DIAGNOSTIC
                if (*vpp != NULL)
                        panic("leaf should be empty");
-#endif
-#ifdef NAMEI_DIAGNOSTIC
-               printf("not found\n");
 #endif
                if (cnp->cn_nameiop == LOOKUP || cnp->cn_nameiop == DELETE ||
                    error != ENOENT)
 #endif
                if (cnp->cn_nameiop == LOOKUP || cnp->cn_nameiop == DELETE ||
                    error != ENOENT)
@@ -702,26 +699,16 @@ relookup(dvp, vpp, cnp)
                 */
                return (0);
        }
                 */
                return (0);
        }
-#ifdef NAMEI_DIAGNOSTIC
-       printf("found\n");
-#endif
-
        dp = *vpp;
        dp = *vpp;
+
 #ifdef DIAGNOSTIC
        /*
         * Check for symbolic link
         */
 #ifdef DIAGNOSTIC
        /*
         * Check for symbolic link
         */
-       if (dp->v_type == VLNK) {
+       if (dp->v_type == VLNK && (cnp->cn_flags & FOLLOW))
                panic ("relookup: symlink found.\n");
                panic ("relookup: symlink found.\n");
-       };
-
-       /*
-        * Check to see if the vnode has been mounted on;
-        * if so find the root of the mounted file system.
-        */
 #endif
 
 #endif
 
-
 nextname:
        /*
         * Check for read-only file systems.
 nextname:
        /*
         * Check for read-only file systems.