From f7af9a299a0269e6c3529c81439368a271cd4f11 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Tue, 3 Jan 2023 19:11:24 +0100 Subject: [PATCH] Codechange: prevent suspicious pointer scaling --- src/3rdparty/squirrel/squirrel/sqstate.cpp | 2 +- src/blitter/32bpp_anim.cpp | 4 ++-- src/blitter/32bpp_optimized.cpp | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/3rdparty/squirrel/squirrel/sqstate.cpp b/src/3rdparty/squirrel/squirrel/sqstate.cpp index 23bd520a1a..574311cf77 100644 --- a/src/3rdparty/squirrel/squirrel/sqstate.cpp +++ b/src/3rdparty/squirrel/squirrel/sqstate.cpp @@ -513,7 +513,7 @@ void RefTable::AllocNodes(SQUnsignedInteger size) bucks[n] = nullptr; temp->refs = 0; new (&temp->obj) SQObjectPtr; - temp->next = temp+1; + temp->next = &temp[1]; temp++; } bucks[n] = nullptr; diff --git a/src/blitter/32bpp_anim.cpp b/src/blitter/32bpp_anim.cpp index ed96c78d80..ab6f984d61 100644 --- a/src/blitter/32bpp_anim.cpp +++ b/src/blitter/32bpp_anim.cpp @@ -383,7 +383,7 @@ void Blitter_32bppAnim::CopyFromBuffer(void *video, const void *src, int width, dst += _screen.pitch; /* Copy back the anim-buffer */ memcpy(anim_line, usrc, width * sizeof(uint16)); - usrc = (const uint32 *)((const uint16 *)usrc + width); + usrc = (const uint32 *)&((const uint16 *)usrc)[width]; anim_line += this->anim_buf_pitch; /* Okay, it is *very* likely that the image we stored is using @@ -422,7 +422,7 @@ void Blitter_32bppAnim::CopyToBuffer(const void *video, void *dst, int width, in udst += width; /* Copy the anim-buffer */ memcpy(udst, anim_line, width * sizeof(uint16)); - udst = (uint32 *)((uint16 *)udst + width); + udst = (uint32 *)&((uint16 *)udst)[width]; anim_line += this->anim_buf_pitch; } } diff --git a/src/blitter/32bpp_optimized.cpp b/src/blitter/32bpp_optimized.cpp index beafcff37f..3eae7c4e48 100644 --- a/src/blitter/32bpp_optimized.cpp +++ b/src/blitter/32bpp_optimized.cpp @@ -316,8 +316,9 @@ template Sprite *Blitter_32bppOptimized::EncodeInternal(const const SpriteLoader::CommonPixel *src = (const SpriteLoader::CommonPixel *)src_orig->data; for (uint y = src_orig->height; y > 0; y--) { - Colour *dst_px = (Colour *)(dst_px_ln + 1); - uint16 *dst_n = (uint16 *)(dst_n_ln + 1); + /* Index 0 of dst_px and dst_n is left as space to save the length of the row to be filled later. */ + Colour *dst_px = (Colour *)&dst_px_ln[1]; + uint16 *dst_n = (uint16 *)&dst_n_ln[1]; uint16 *dst_len = dst_n++;