]> granicus.if.org Git - file/commit
Fix relative offsets after search again, this time I think properly.
authorReuben Thomas <rrt@sc3d.org>
Mon, 25 Feb 2008 02:54:08 +0000 (02:54 +0000)
committerReuben Thomas <rrt@sc3d.org>
Mon, 25 Feb 2008 02:54:08 +0000 (02:54 +0000)
commitb704de6fcd11de063d7c62968d18fedb6f3787a1
tree075ceb12c63372afa596567f74f12a562564bdc3
parentade5b774940f41babc3d69bdaceae3b3e9de91ec
Fix relative offsets after search again, this time I think properly.
Since this fix was complex (for me!), I'll explain it; the fix also is
slightly more than minimal in order to make the code clearer.

The bug was in lines 1644 and 1652: ms->search.offset = m->offset
overwrites the earlier addition, in lines 192-3, of the relevant offset
to ms->offset. So m->offset should become ms->offset in both lines.

This is a correct fix, but it is not ideal. For starters (and
indepdently of this fix), line 1652 can be changed simply to
ms->search.offset += idx, as this does not mention ms->offset
unnecessarily. Secondly, the code for FILE_REGEX initialises
ms->search.offset in mcopy at about line 820, not in magiccheck at
all, so it makes sense to move FILE_SEARCH's initialisation there too
for consistency. It then becomes
ms->search.offset = offset. We can check that "offset" is earlier set
to "ms->offset" in mcopy's caller, mget, so it's the same value.
src/softmagic.c