Whamcloud - gitweb
ChangeLog, pass2.c, problem.c, problem.h:
authorTheodore Ts'o <tytso@mit.edu>
Mon, 25 Oct 1999 21:03:34 +0000 (21:03 +0000)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 25 Oct 1999 21:03:34 +0000 (21:03 +0000)
  problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
  pass2.c (check_dir_block): Require that the length of the directory
   entry be at least 12 bytes.  Check to see if the filename is
   zero-length, and flag that as an error.

e2fsck/ChangeLog
e2fsck/pass2.c
e2fsck/problem.c
e2fsck/problem.h

index d4f4dc0..39f35c2 100644 (file)
@@ -1,3 +1,11 @@
+1999-10-25    <tytso@valinux.com>
+
+       * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
+
+       * pass2.c (check_dir_block): Require that the length of the
+               directory entry be at least 12 bytes.  Check to see if the
+               filename is zero-length, and flag that as an error.
+
 1999-10-22    <tytso@valinux.com>
 
        * Release of E2fsprogs 1.16
index f41cdfe..e6a434c 100644 (file)
@@ -406,7 +406,7 @@ static int check_dir_block(ext2_filsys fs,
                cd->pctx.dirent = dirent;
                cd->pctx.num = offset;
                if (((offset + dirent->rec_len) > fs->blocksize) ||
-                   (dirent->rec_len < 8) ||
+                   (dirent->rec_len < 12) ||
                    ((dirent->rec_len % 4) != 0) ||
                    (((dirent->name_len & 0xFF)+8) > dirent->rec_len)) {
                        if (fix_problem(ctx, PR_2_DIR_CORRUPTED, &cd->pctx)) {
@@ -496,6 +496,12 @@ static int check_dir_block(ext2_filsys fs,
                         * directory hasn't been created yet.
                         */
                        problem = PR_2_LINK_ROOT;
+               } else if ((dot_state > 2) &&
+                          (dirent->name_len & 0xFF) == 0) {
+                       /*
+                        * Don't allow zero-length directory names.
+                        */
+                       problem = PR_2_NULL_NAME;
                }
 
                if (problem) {
index 718002f..1e26d60 100644 (file)
@@ -708,6 +708,11 @@ static const struct e2fsck_problem problem_table[] = {
          "@E has filetype set\n",
          PROMPT_CLEAR, PR_PREEN_OK },
 
+       /* Directory filename is null */
+       { PR_2_NULL_NAME,
+         "@E has a zero-length name\n",
+         PROMPT_CLEAR, 0 },
+
        /* Pass 3 errors */
 
        /* Pass 3: Checking directory connectivity */
index 80b35be..f9ce29e 100644 (file)
@@ -420,6 +420,9 @@ struct problem_context {
 /* Directory filetype set when it shouldn't be */
 #define PR_2_CLEAR_FILETYPE    0x020029
 
+/* Directory filename can't be zero-length  */
+#define PR_2_NULL_NAME         0x020030
+
 /*
  * Pass 3 errors
  */