Fix distance calculation in SquashFS when block boundaries are exceeded #53
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As stated in the documentation
Inodes are packed into the metadata blocks, and are not aligned to block boundaries, therefore inodes overlap compressed blocksit is possible, that metadata blocks are not within the data block.The code in general accounts for this situation. However the distance calculation worked with incorrect assumptions in regards to this.
This leads to situations, where for example directory metadata blocks could not be calculated correctly, when the metadata spans across multiple data blocks.
While debugging the problem, I added two very minimal changes to make things a little more clear in other areas.
These are the two different documentations which I used while debugging and fixing the problem: