X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Ftagged_items.c;h=0eee81d91409432f081305ef1395f6dec0e0f9e6;hp=6cd897fa7ae1bf167c7c4f6e21088b670d1a394c;hb=6307cde518579ed20e2d6e6488bec204a4a22555;hpb=765ad052ef565bda36dbe103479f9929b5862e3f diff --git a/src/tagged_items.c b/src/tagged_items.c index 6cd897fa..0eee81d9 100644 --- a/src/tagged_items.c +++ b/src/tagged_items.c @@ -45,7 +45,7 @@ struct tagged_item_header { /* 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 @@ -98,10 +98,10 @@ inode_get_tagged_item(const struct wim_inode *inode, return hdr->data; len = (len + 7) & ~7; - if (len >= len_remaining) + if (len_remaining <= sizeof(struct tagged_item_header) + len) 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; }