From: Eric Biggers Date: Mon, 26 May 2014 14:01:20 +0000 (-0500) Subject: tagged_items.c: Include header size when searching items X-Git-Tag: v1.7.0~95 X-Git-Url: https://wimlib.net/git/?p=wimlib;a=commitdiff_plain;h=6307cde518579ed20e2d6e6488bec204a4a22555 tagged_items.c: Include header size when searching items --- 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; }