]> wimlib.net Git - wimlib/blobdiff - src/tagged_items.c
tagged_items.c: Include header size when searching items
[wimlib] / src / tagged_items.c
index 6cd897fa7ae1bf167c7c4f6e21088b670d1a394c..0eee81d91409432f081305ef1395f6dec0e0f9e6 100644 (file)
@@ -45,7 +45,7 @@ struct tagged_item_header {
        /* Unique identifier for this item.  */
        le32 tag;
 
        /* Unique identifier for this item.  */
        le32 tag;
 
-       /* Size of the data of this tagged item, in bytes.  This includes this
+       /* Size of the data of this tagged item, in bytes.  This excludes this
         * header and should be a multiple of 8.
         *
         * (Actually, the MS implementation seems to round this up to an 8 byte
         * header and should be a multiple of 8.
         *
         * (Actually, the MS implementation seems to round this up to an 8 byte
@@ -98,10 +98,10 @@ inode_get_tagged_item(const struct wim_inode *inode,
                        return hdr->data;
 
                len = (len + 7) & ~7;
                        return hdr->data;
 
                len = (len + 7) & ~7;
-               if (len >= len_remaining)
+               if (len_remaining <= sizeof(struct tagged_item_header) + len)
                        return NULL;
                        return NULL;
-               len_remaining -= len;
-               p = hdr->data + len;
+               len_remaining -= sizeof(struct tagged_item_header) + len;
+               p += sizeof(struct tagged_item_header) + len;
        }
        return NULL;
 }
        }
        return NULL;
 }