Index: uspace/srv/fs/cdfs/cdfs_ops.c
===================================================================
--- uspace/srv/fs/cdfs/cdfs_ops.c	(revision f2f4c009a5353431686cc28705a037a7b19faf96)
+++ uspace/srv/fs/cdfs/cdfs_ops.c	(revision 8e77b12f1cdda5d1d37cc9ab6c0729f3ebe1e055)
@@ -66,4 +66,9 @@
 #define CDFS_STANDARD_IDENT  "CD001"
 
+enum {
+	CDFS_NAME_CURDIR = '\x00',
+	CDFS_NAME_PARENTDIR = '\x01'
+};
+
 typedef enum {
 	VOL_DESC_BOOT = 0,
@@ -409,12 +414,15 @@
 			return false;
 		
-		cdfs_dir_t *dir = (cdfs_dir_t *) block->data;
+		cdfs_dir_t *dir;
 		
-		// FIXME: skip '.' and '..'
-		
-		for (size_t offset = 0;
-		    (dir->length != 0) && (offset < BLOCK_SIZE);
+		for (size_t offset = 0; offset < BLOCK_SIZE;
 		    offset += dir->length) {
 			dir = (cdfs_dir_t *) (block->data + offset);
+			if (dir->length == 0)
+				break;
+			if (offset + dir->length > BLOCK_SIZE) {
+				/* XXX Incorrect FS structure */
+				break;
+			}
 			
 			cdfs_dentry_type_t dentry_type;
@@ -423,4 +431,13 @@
 			else
 				dentry_type = CDFS_FILE;
+			
+			/* Skip special entries */
+			
+			if (dir->name_length == 1 &&
+			    dir->name[0] == CDFS_NAME_CURDIR)
+				continue;
+			if (dir->name_length == 1 &&
+			    dir->name[0] == CDFS_NAME_PARENTDIR)
+				continue;
 			
 			// FIXME: hack - indexing by dentry byte offset on disc
