ChangeLog, pass2.c, problem.c, problem.h:
  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.

diff --git a/e2fsck/ChangeLog b/e2fsck/ChangeLog
index d4f4dc0..39f35c2 100644
--- a/e2fsck/ChangeLog
+++ b/e2fsck/ChangeLog
@@ -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
diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c
index f41cdfe..e6a434c 100644
--- a/e2fsck/pass2.c
+++ b/e2fsck/pass2.c
@@ -406,7 +406,7 @@
 		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 @@
 			 * 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) {
diff --git a/e2fsck/problem.c b/e2fsck/problem.c
index 718002f..1e26d60 100644
--- a/e2fsck/problem.c
+++ b/e2fsck/problem.c
@@ -708,6 +708,11 @@
 	  "@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 */
diff --git a/e2fsck/problem.h b/e2fsck/problem.h
index 80b35be..f9ce29e 100644
--- a/e2fsck/problem.h
+++ b/e2fsck/problem.h
@@ -420,6 +420,9 @@
 /* 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
  */