diff --git a/fs/udf/directory.c b/fs/udf/directory.c
index 0a98a2369738fc2cff925c80066b92a58b299066..3835f983cc99ff335a052c990f259640ce09fa84 100644
--- a/fs/udf/directory.c
+++ b/fs/udf/directory.c
@@ -152,6 +152,9 @@ struct fileIdentDesc *udf_fileident_read(struct inode *dir, loff_t *nf_pos,
 			       sizeof(struct fileIdentDesc));
 		}
 	}
+	/* Got last entry outside of dir size - fs is corrupted! */
+	if (*nf_pos > dir->i_size)
+		return NULL;
 	return fi;
 }