polymost_printext256: fix oob read when passing negative 'col' or 'backcol'

values;  check the color index that is potentially gotten from the string to
be printed.

git-svn-id: https://svn.eduke32.com/eduke32@2162 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
helixhorned 2011-12-09 19:09:29 +00:00
parent c112cdde89
commit c7aa4592c2

View file

@ -6047,20 +6047,25 @@ int32_t polymost_printext256(int32_t xpos, int32_t ypos, int16_t col, int16_t ba
GLfloat tx, ty, txc, tyc; GLfloat tx, ty, txc, tyc;
int32_t c; int32_t c;
palette_t p,b; palette_t p,b;
int32_t arbackcol = backcol >= 0 ? backcol : 0;
// FIXME?
if (col < 0)
col = 0;
if (gammabrightness) if (gammabrightness)
{ {
p = curpalette[col]; p = curpalette[col];
b = curpalette[backcol]; b = curpalette[arbackcol];
} }
else else
{ {
p.r = britable[curbrightness][ curpalette[col].r ]; p.r = britable[curbrightness][ curpalette[col].r ];
p.g = britable[curbrightness][ curpalette[col].g ]; p.g = britable[curbrightness][ curpalette[col].g ];
p.b = britable[curbrightness][ curpalette[col].b ]; p.b = britable[curbrightness][ curpalette[col].b ];
b.r = britable[curbrightness][ curpalette[backcol].r ]; b.r = britable[curbrightness][ curpalette[arbackcol].r ];
b.g = britable[curbrightness][ curpalette[backcol].g ]; b.g = britable[curbrightness][ curpalette[arbackcol].g ];
b.b = britable[curbrightness][ curpalette[backcol].b ]; b.b = britable[curbrightness][ curpalette[arbackcol].b ];
} }
if ((rendmode < 3) || (qsetmode != 200)) return(-1); if ((rendmode < 3) || (qsetmode != 200)) return(-1);
@ -6157,7 +6162,9 @@ int32_t polymost_printext256(int32_t xpos, int32_t ypos, int16_t col, int16_t ba
c++; c++;
} }
smallbuf[bi++]=0; smallbuf[bi++]=0;
if (col)col = atol(smallbuf); if (col)col = atol(smallbuf); /* FIXME: atol is unsafe */
if ((unsigned)col >= 256)
col = 0;
if (gammabrightness) if (gammabrightness)
{ {