From 405c6cb3e2d0c44c955f52fee944827dd363e9ba Mon Sep 17 00:00:00 2001 From: toaster Date: Tue, 22 Oct 2024 20:17:51 +0100 Subject: [PATCH] M_GetConditionString, UC_EMBLEM: Prevent Medal ID out-of-bounds --- src/m_cond.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/m_cond.c b/src/m_cond.c index 6399f0eac..bfeaced91 100644 --- a/src/m_cond.c +++ b/src/m_cond.c @@ -2442,10 +2442,12 @@ static const char *M_GetConditionString(condition_t *cn) case UC_EMBLEM: // Requires emblem x to be obtained { - INT32 checkLevel; + INT32 checkLevel = NEXTMAP_INVALID; i = cn->requirement-1; - checkLevel = M_EmblemMapNum(&emblemlocations[i]); + + if (i >= 0 && i < numemblems) + checkLevel = M_EmblemMapNum(&emblemlocations[i]); if (checkLevel >= nummapheaders || !mapheaderinfo[checkLevel] || emblemlocations[i].type == ET_NONE) return va("INVALID MEDAL MAP \"%d:%d\"", cn->requirement, checkLevel);