prevent infinite loops in dirempty() with trashed directories
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Thu, 21 Feb 1985 11:30:02 +0000 (03:30 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Thu, 21 Feb 1985 11:30:02 +0000 (03:30 -0800)
SCCS-vsn: sys/kern/vfs_lookup.c 6.19
SCCS-vsn: sys/ufs/ffs/ufs_lookup.c 6.19
SCCS-vsn: sys/ufs/ufs/ufs_lookup.c 6.19

usr/src/sys/kern/vfs_lookup.c
usr/src/sys/ufs/ffs/ufs_lookup.c
usr/src/sys/ufs/ufs/ufs_lookup.c

index 0ea94e6..6fee306 100644 (file)
@@ -1,4 +1,4 @@
-/*     vfs_lookup.c    6.18    85/02/20        */
+/*     vfs_lookup.c    6.19    85/02/20        */
 
 #include "param.h"
 #include "systm.h"
 
 #include "param.h"
 #include "systm.h"
@@ -1096,6 +1096,8 @@ dirempty(ip, parentino)
 #define        MINDIRSIZ (sizeof (struct dirtemplate) / 2)
 
        for (off = 0; off < ip->i_size; off += dp->d_reclen) {
 #define        MINDIRSIZ (sizeof (struct dirtemplate) / 2)
 
        for (off = 0; off < ip->i_size; off += dp->d_reclen) {
+               if (dp->d_reclen <= 0)
+                       return (0);
                error = rdwri(UIO_READ, ip, (caddr_t)dp, MINDIRSIZ,
                    off, 1, &count);
                /*
                error = rdwri(UIO_READ, ip, (caddr_t)dp, MINDIRSIZ,
                    off, 1, &count);
                /*
index 717de00..f35525f 100644 (file)
@@ -1,4 +1,4 @@
-/*     ufs_lookup.c    6.18    85/02/20        */
+/*     ufs_lookup.c    6.19    85/02/20        */
 
 #include "param.h"
 #include "systm.h"
 
 #include "param.h"
 #include "systm.h"
@@ -1096,6 +1096,8 @@ dirempty(ip, parentino)
 #define        MINDIRSIZ (sizeof (struct dirtemplate) / 2)
 
        for (off = 0; off < ip->i_size; off += dp->d_reclen) {
 #define        MINDIRSIZ (sizeof (struct dirtemplate) / 2)
 
        for (off = 0; off < ip->i_size; off += dp->d_reclen) {
+               if (dp->d_reclen <= 0)
+                       return (0);
                error = rdwri(UIO_READ, ip, (caddr_t)dp, MINDIRSIZ,
                    off, 1, &count);
                /*
                error = rdwri(UIO_READ, ip, (caddr_t)dp, MINDIRSIZ,
                    off, 1, &count);
                /*
index 717de00..f35525f 100644 (file)
@@ -1,4 +1,4 @@
-/*     ufs_lookup.c    6.18    85/02/20        */
+/*     ufs_lookup.c    6.19    85/02/20        */
 
 #include "param.h"
 #include "systm.h"
 
 #include "param.h"
 #include "systm.h"
@@ -1096,6 +1096,8 @@ dirempty(ip, parentino)
 #define        MINDIRSIZ (sizeof (struct dirtemplate) / 2)
 
        for (off = 0; off < ip->i_size; off += dp->d_reclen) {
 #define        MINDIRSIZ (sizeof (struct dirtemplate) / 2)
 
        for (off = 0; off < ip->i_size; off += dp->d_reclen) {
+               if (dp->d_reclen <= 0)
+                       return (0);
                error = rdwri(UIO_READ, ip, (caddr_t)dp, MINDIRSIZ,
                    off, 1, &count);
                /*
                error = rdwri(UIO_READ, ip, (caddr_t)dp, MINDIRSIZ,
                    off, 1, &count);
                /*