OSDN Git Service

Check EOD entry presence.
authorresver <resver@60bc1c72-a15a-11de-b98f-4500b42dc123>
Wed, 31 Aug 2011 16:30:41 +0000 (16:30 +0000)
committerresver <resver@60bc1c72-a15a-11de-b98f-4500b42dc123>
Wed, 31 Aug 2011 16:30:41 +0000 (16:30 +0000)
git-svn-id: http://exfat.googlecode.com/svn/trunk@227 60bc1c72-a15a-11de-b98f-4500b42dc123

libexfat/node.c

index fa9e572..d433b44 100644 (file)
@@ -108,6 +108,12 @@ static int fetch_next_entry(struct exfat* ef, const struct exfat_node* parent,
        /* fetch the next cluster if needed */
        if ((it->offset & (CLUSTER_SIZE(*ef->sb) - 1)) == 0)
        {
+               if (it->offset >= parent->size)
+               {
+                       exfat_error("missing EOD entry (0x%"PRIx64", 0x%"PRIx64")",
+                                       it->offset, parent->size);
+                       return 1;
+               }
                it->cluster = exfat_next_cluster(ef, parent, it->cluster);
                if (CLUSTER_INVALID(it->cluster))
                {