MSG_ReadVector(&cl_message, pos, cls.protocol);
- if (sound_num >= MAX_SOUNDS)
+ if (sound_num < 0 || sound_num >= MAX_SOUNDS)
{
Con_Printf("CL_ParseStartSoundPacket: sound_num (%i) >= MAX_SOUNDS (%i)\n", sound_num, MAX_SOUNDS);
return;
// clear name of file that just finished
cls.qw_downloadname[0] = 0;
+ // skip the download fragment if playing a demo
+ if (!cls.netcon)
+ {
+ return;
+ }
+
switch (cls.qw_downloadtype)
{
case dl_single:
sound_num = (unsigned short) MSG_ReadShort(&cl_message);
else
sound_num = MSG_ReadByte(&cl_message);
+
+ if (sound_num < 0 || sound_num >= MAX_SOUNDS)
+ {
+ Con_Printf("CL_ParseStaticSound: sound_num(%i) >= MAX_SOUNDS (%i)\n", sound_num, MAX_SOUNDS);
+ return;
+ }
+
vol = MSG_ReadByte(&cl_message);
atten = MSG_ReadByte(&cl_message);
CL_FindNonSolidLocation(pos, pos, 10);
colorStart = MSG_ReadByte(&cl_message);
colorLength = MSG_ReadByte(&cl_message);
+ if (colorLength == 0)
+ colorLength = 1;
CL_ParticleExplosion2(pos, colorStart, colorLength);
tempcolor = palette_rgb[(rand()%colorLength) + colorStart];
color[0] = tempcolor[0] * (2.0f / 255.0f);