diff --git a/polymer/eduke32/build/src/build.c b/polymer/eduke32/build/src/build.c index 48b47f4f2..ffae4f3a0 100644 --- a/polymer/eduke32/build/src/build.c +++ b/polymer/eduke32/build/src/build.c @@ -258,15 +258,16 @@ static int32_t osdcmd_vidmode(const osdfuncparm_t *parm) #ifdef USE_OPENGL case 1: // bpp switch tmp = Batol(parm->parms[0]); - if (tmp==8 || tmp==16 || tmp==32) - newbpp = tmp; - break; + if (!(tmp==8 || tmp==16 || tmp==32)) + return OSDCMD_SHOWHELP; + newbpp = tmp; case 4: // fs, res, bpp switch newfullscreen = (Batol(parm->parms[3]) != 0); case 3: // res & bpp switch tmp = Batol(parm->parms[2]); - if (tmp==8 || tmp==16 || tmp==32) - newbpp = tmp; + if (!(tmp==8 || tmp==16 || tmp==32)) + return OSDCMD_SHOWHELP; + newbpp = tmp; #endif case 2: // res switch newx = Batol(parm->parms[0]); diff --git a/polymer/eduke32/source/osdcmds.c b/polymer/eduke32/source/osdcmds.c index d9fd27dc4..74868184c 100644 --- a/polymer/eduke32/source/osdcmds.c +++ b/polymer/eduke32/source/osdcmds.c @@ -371,12 +371,17 @@ static int32_t osdcmd_vidmode(const osdfuncparm_t *parm) { int32_t newbpp = ud.config.ScreenBPP, newwidth = ud.config.ScreenWidth, newheight = ud.config.ScreenHeight, newfs = ud.config.ScreenMode; + int32_t tmp; + if (parm->numparms < 1 || parm->numparms > 4) return OSDCMD_SHOWHELP; switch (parm->numparms) { case 1: // bpp switch - newbpp = Batol(parm->parms[0]); + tmp = Batol(parm->parms[0]); + if (!(tmp==8 || tmp==16 || tmp==32)) + return OSDCMD_SHOWHELP; + newbpp = tmp; break; case 2: // res switch newwidth = Batol(parm->parms[0]); @@ -386,7 +391,10 @@ static int32_t osdcmd_vidmode(const osdfuncparm_t *parm) case 4: newwidth = Batol(parm->parms[0]); newheight = Batol(parm->parms[1]); - newbpp = Batol(parm->parms[2]); + tmp = Batol(parm->parms[2]); + if (!(tmp==8 || tmp==16 || tmp==32)) + return OSDCMD_SHOWHELP; + newbpp = tmp; if (parm->numparms == 4) newfs = (Batol(parm->parms[3]) != 0); break;