From 7a2c46d4eb4f3f0d12cae4f41df0e55342a42fd3 Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Wed, 28 Feb 2024 14:06:03 +0000 Subject: [PATCH] AVOID_UB for out-of-bounds access in AudioLoad_Init (#1902) --- src/audio/lib/load.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/audio/lib/load.c b/src/audio/lib/load.c index c542c80620..0d2fe051dd 100644 --- a/src/audio/lib/load.c +++ b/src/audio/lib/load.c @@ -1133,9 +1133,19 @@ void AudioLoad_Init(void* heap, u32 heapSize) { s32 i; u8* audioContextPtr = (u8*)&gAudioCtx; +#ifndef AVOID_UB + //! @bug This clearing loop sets one extra byte to 0 following gAudioCtx. + //! In practice this is harmless as it would set the most significant byte in gAudioCustomUpdateFunction to 0, + //! which was just reset to NULL above. for (i = sizeof(gAudioCtx); i >= 0; i--) { *audioContextPtr++ = 0; } +#else + // Avoid out-of-bounds variable access + for (i = sizeof(gAudioCtx); i > 0; i--) { + *audioContextPtr++ = 0; + } +#endif } // 1000 is a conversion from seconds to milliseconds