Fixes #476: Accessing freed memory in fastboot.c #477
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 original code takes a pointer (sparse_header * pfile) to a DataBuffer that is freed in subsequent calls to the request_data() function of the underlying FileBuffer. However, the pointer is still used to determine various aspects of the sparse file later. These may be already changed if the memory is reused, which leads to invalid values and trashed transfers.
Fix is to store required file_hdr_sz, blk_sz, total_blks and total_chunks as separate variables.