tests demonstrating a failure case of CF digests #676
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.
During the review of #639, some concerns were raised about the potential for digest collisions when added the PageToken to the column family digest.
We should expect CFs that are not equal to have different digests, except for the unlucky hash collision.
After close inspection, it appears that the existing code is actually vulnerable to collisions of crafted Cells or DeletionInfos.
A Cell digest has the following structure
A DeletionInfo digest has the following structure (assuming there is no row tombstone)
name
,value
in the Cell andstart
,end
in the DeletionInfo are arbitrary-length ByteBuffers, so the structure of these digests is almost identical, except for the suffixed0
at the end of the Cell digest. With some simple bit shifting, we can easily craft a Cell and a DeletionInfo that have the same digest.