Verify existence of metadata marker #102
Closed
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.
The current code does not properly check if there is at least one
marker inside the database. If there is no marker available, the
initial search area will be considered as a valid metadata start,
which possibly leads to out of boundary access due to offset addition.
An example would be a database file with only one byte in it (1 byte is
needed for a successful mmap call). This statement would lead to
out of boundary access later on (file_size is 1):
Also, if there are multiple markers in the metadata area, use the
last one encountered. The old code looks like that was intended.
PS: Also keep in mind that the calculation of metadata size is not
correct. The pointer increments by strlen(METADATA_MARKER),
but the size is not reduced. The later code does not keep that in
mind, therefore it should be taken into account here.