From 6307cde518579ed20e2d6e6488bec204a4a22555 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Mon, 26 May 2014 09:01:20 -0500 Subject: [PATCH] tagged_items.c: Include header size when searching items --- src/tagged_items.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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; } -- 2.43.0