From b2b8ab7890303904a91ce2b6de4b4f248ea4119a Mon Sep 17 00:00:00 2001 From: helixhorned Date: Sat, 28 Apr 2012 21:56:38 +0000 Subject: [PATCH] CON palfrom: sanity-check current player and maybe print error message. git-svn-id: https://svn.eduke32.com/eduke32@2615 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/eduke32/source/gameexec.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/polymer/eduke32/source/gameexec.c b/polymer/eduke32/source/gameexec.c index 62503949a..ddd8c71f7 100644 --- a/polymer/eduke32/source/gameexec.c +++ b/polymer/eduke32/source/gameexec.c @@ -3316,11 +3316,19 @@ nullquote: case CON_PALFROM: insptr++; + if ((unsigned)vm.g_p >= (unsigned)playerswhenstarted) { - int32_t j = 2; - g_player[vm.g_p].ps->pals.f = *insptr++; - for (; j>=0; j--) - *((char *)(&g_player[vm.g_p].ps->pals.r)+2-j) = *insptr++; + OSD_Printf(CON_ERROR "invalid player ID %d\n",g_errorLineNum,keyw[g_tw],vm.g_p); + insptr += 4; + } + else + { + palette_t *const pals = &g_player[vm.g_p].ps->pals; + + pals->f = *insptr++; + pals->r = *insptr++; + pals->g = *insptr++; + pals->b = *insptr++; } continue;