From a66d30585863c4fabbb724a69e30e3282c39bdc3 Mon Sep 17 00:00:00 2001
From: gameblabla <gameblabla@openmailbox.org>
Date: Thu, 18 Jul 2019 02:09:56 +0200
Subject: [PATCH] psxbios: Fix out-of-bounds issue.

Make sure to return 0xff is no TCBs are available.
Thanks senquack for the proper fix.
---
 libpcsxcore/psxbios.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

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
-- 
2.39.5