]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/fs/iso9660.c (grub_iso9660_iterate_dir): Skip . and ..
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 24 Jun 2011 11:02:49 +0000 (13:02 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 24 Jun 2011 11:02:49 +0000 (13:02 +0200)
ChangeLog
grub-core/fs/iso9660.c

index 1e7a468ecca2d3d59cfbc5565423a683072dffc1..d21fa1026540c83783d98c0df6629fda11be3f3e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-06-24  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/fs/iso9660.c (grub_iso9660_iterate_dir): Skip . and ..
+
 2011-06-24  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Load
index 508cc5b71e878141b6c382e88fbe2cfc58ba6588..5b53ca597100186d007ef22f6d36e67c1be618ee 100644 (file)
@@ -598,7 +598,7 @@ grub_iso9660_iterate_dir (grub_fshelp_node_t dir,
       return 0;
     }
 
-  while (offset < dir->size)
+  for (; offset < dir->size; offset += dirent.len)
     {
       if (grub_disk_read (dir->data->disk,
                          (dir->blk << GRUB_ISO9660_LOG2_BLKSZ)
@@ -676,10 +676,9 @@ grub_iso9660_iterate_dir (grub_fshelp_node_t dir,
            if (filename)
              *filename = '\0';
 
-           if (dirent.namelen == 1 && name[0] == 0)
-             filename = ".";
-           else if (dirent.namelen == 1 && name[0] == 1)
-             filename = "..";
+           /* . and .. */
+           if (dirent.namelen == 1 && (name[0] == 0 || name[0] == 1))
+             continue;
            else
              filename = name;
          }
@@ -712,8 +711,6 @@ grub_iso9660_iterate_dir (grub_fshelp_node_t dir,
        if (filename_alloc)
          grub_free (filename);
       }
-
-      offset += dirent.len;
     }
 
   return 0;