mirror of
https://github.com/torvalds/linux.git
synced 2026-11-09 13:44:03 +01:00
dm vdo indexer: validate record page numbers better
Move the record_page_number validation check into the chapter index lookup function in order to detect (and discard) corrupted values on all paths. Signed-off-by: Matthew Sakai <msakai@redhat.com> Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Cc: stable@vger.kernel.org
This commit is contained in:
parent
936293c9f3
commit
e3683a76a3
|
|
@ -284,10 +284,17 @@ int uds_search_chapter_index_page(struct delta_index_page *index_page,
|
|||
if (result != UDS_SUCCESS)
|
||||
return result;
|
||||
|
||||
if (was_entry_found(&entry, address))
|
||||
*record_page_ptr = uds_get_delta_entry_value(&entry);
|
||||
else
|
||||
if (!was_entry_found(&entry, address)) {
|
||||
*record_page_ptr = NO_CHAPTER_INDEX_ENTRY;
|
||||
return UDS_SUCCESS;
|
||||
}
|
||||
|
||||
*record_page_ptr = uds_get_delta_entry_value(&entry);
|
||||
result = VDO_ASSERT(*record_page_ptr < geometry->record_pages_per_chapter,
|
||||
"0 <= %d < %u", *record_page_ptr,
|
||||
geometry->record_pages_per_chapter);
|
||||
if (result != VDO_SUCCESS)
|
||||
*record_page_ptr = NO_CHAPTER_INDEX_ENTRY;
|
||||
|
||||
return UDS_SUCCESS;
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -891,12 +891,6 @@ int uds_search_cached_record_page(struct volume *volume, struct uds_request *req
|
|||
if (record_page_number == NO_CHAPTER_INDEX_ENTRY)
|
||||
return UDS_SUCCESS;
|
||||
|
||||
result = VDO_ASSERT(record_page_number < geometry->record_pages_per_chapter,
|
||||
"0 <= %d < %u", record_page_number,
|
||||
geometry->record_pages_per_chapter);
|
||||
if (result != VDO_SUCCESS)
|
||||
return result;
|
||||
|
||||
page_number = geometry->index_pages_per_chapter + record_page_number;
|
||||
|
||||
physical_page = map_to_physical_page(&volume->geometry, chapter, page_number);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user