From: gameblabla Date: Thu, 18 Jul 2019 00:09:56 +0000 (+0200) Subject: psxbios: Fix out-of-bounds issue. X-Git-Tag: r23~156^2~36 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=commitdiff_plain;h=a66d30585863c4fabbb724a69e30e3282c39bdc3 psxbios: Fix out-of-bounds issue. Make sure to return 0xff is no TCBs are available. Thanks senquack for the proper fix. --- diff --git a/libpcsxcore/psxbios.c b/libpcsxcore/psxbios.c index 9341b0d6..5bff23ee 100644 --- a/libpcsxcore/psxbios.c +++ b/libpcsxcore/psxbios.c @@ -1667,8 +1667,20 @@ void psxBios_OpenTh() { // 0e int th; for (th=1; th<8; th++) + { if (Thread[th].status == 0) break; + } + if (th == 8) { + // Feb 2019 - Added out-of-bounds fix caught by cppcheck: + // When no free TCB is found, return 0xffffffff according to Nocash doc. +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("\t%s() WARNING! No Free TCBs found!\n", __func__); +#endif + v0 = 0xffffffff; + pc0 = ra; + return; + } #ifdef PSXBIOS_LOG PSXBIOS_LOG("psxBios_%s: %x\n", biosB0n[0x0e], th); #endif