security fix and highchars fix

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1359 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2005-09-24 11:44:26 +00:00
parent 3a4d998f6c
commit ff204ebd02

View file

@ -335,16 +335,27 @@ static void ParseServerinfo(sv_t *tv, netmsg_t *m)
static void ParsePrint(sv_t *tv, netmsg_t *m, int to, unsigned int mask)
{
unsigned char *t;
char text[1024];
int level;
level = ReadByte(m);
ReadString(m, text, sizeof(text));
if (to == dem_all || to == dem_read)
{
if (level > 1)
{
for (t = (unsigned char*)text; *t; t++)
{
if (*t > 128)
*t -= 128;
if (*t == 16)
*t = '[';
}
printf("%s", text);
}
}
Multicast(tv, m->data+m->startpos, m->readpos - m->startpos, to, mask);
}
@ -623,7 +634,10 @@ static void ParseUpdateStat(sv_t *tv, netmsg_t *m, int to, unsigned int mask)
statnum = ReadByte(m);
value = ReadByte(m);
for (pnum = 0; pnum < 32; pnum++)
if (statnum >= MAX_STATS)
statnum = MAX_STATS-1; //please don't crash us
for (pnum = 0; pnum < MAX_CLIENTS; pnum++)
{
if (mask & (1<<pnum))
tv->players[pnum].stats[statnum] = value;
@ -640,7 +654,10 @@ static void ParseUpdateStatLong(sv_t *tv, netmsg_t *m, int to, unsigned int mask
statnum = ReadByte(m);
value = ReadLong(m);
for (pnum = 0; pnum < 32; pnum++)
if (statnum >= MAX_STATS)
statnum = MAX_STATS-1; //please don't crash us
for (pnum = 0; pnum < MAX_CLIENTS; pnum++)
{
if (mask & (1<<pnum))
tv->players[pnum].stats[statnum] = value;