mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	buffer_cache: avoid overflow in usage tracker (#13166)
This commit is contained in:
		@@ -26,6 +26,9 @@ public:
 | 
			
		||||
    void Track(u64 offset, u64 size) noexcept {
 | 
			
		||||
        const size_t page = offset >> PAGE_SHIFT;
 | 
			
		||||
        const size_t page_end = (offset + size) >> PAGE_SHIFT;
 | 
			
		||||
        if (page_end < page || page_end >= pages.size()) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        TrackPage(page, offset, size);
 | 
			
		||||
        if (page == page_end) {
 | 
			
		||||
            return;
 | 
			
		||||
@@ -41,6 +44,9 @@ public:
 | 
			
		||||
    [[nodiscard]] bool IsUsed(u64 offset, u64 size) const noexcept {
 | 
			
		||||
        const size_t page = offset >> PAGE_SHIFT;
 | 
			
		||||
        const size_t page_end = (offset + size) >> PAGE_SHIFT;
 | 
			
		||||
        if (page_end < page || page_end >= pages.size()) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        if (IsPageUsed(page, offset, size)) {
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user