From 04b927ab7f9322fd388d24f2aee9b92eb3c336e2 Mon Sep 17 00:00:00 2001 From: emufan4568 Date: Wed, 7 Sep 2022 23:44:36 +0300 Subject: [PATCH] morton_swizzle: Avoid buffer underflow * Check the y coordinate before decrementing linear_buffer --- src/video_core/rasterizer_cache/morton_swizzle.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/video_core/rasterizer_cache/morton_swizzle.h b/src/video_core/rasterizer_cache/morton_swizzle.h index 73c31b216..7e9200743 100644 --- a/src/video_core/rasterizer_cache/morton_swizzle.h +++ b/src/video_core/rasterizer_cache/morton_swizzle.h @@ -90,7 +90,11 @@ static void MortonCopy(u32 stride, u32 height, u8* linear_buffer, PAddr base, PA x = (x + 8) % stride; linear_buffer += 8 * aligned_bytes_per_pixel; if (!x) { - y += 8; + y = (y + 8) % height; + if (!y) { + return; + } + linear_buffer -= stride * 9 * aligned_bytes_per_pixel; } };