@@ -2271,27 +2271,31 @@ void CNetAPI::ReadBulletsync(CClientPlayer* pPlayer, NetBitStreamInterface& BitS
22712271{
22722272 // Read the bulletsync data
22732273 uchar ucWeapon = 0 ;
2274- BitStream.Read (ucWeapon);
2275- if (!CClientPickupManager::IsValidWeaponID (ucWeapon))
2274+ if (!BitStream.Read (ucWeapon) || !CClientWeaponManager::HasWeaponBulletSync (ucWeapon))
22762275 return ;
2276+
22772277 eWeaponType weaponType = (eWeaponType)ucWeapon;
22782278
22792279 CVector vecStart, vecEnd;
2280- BitStream.Read ((char *)&vecStart, sizeof (CVector));
2281- BitStream.Read ((char *)&vecEnd, sizeof (CVector));
2280+ if (!BitStream.Read ((char *)&vecStart, sizeof (CVector)) || !BitStream.Read ((char *)&vecEnd, sizeof (CVector)))
2281+ return ;
2282+
2283+ if (!vecStart.IsValid () || !vecEnd.IsValid ())
2284+ return ;
22822285
22832286 uchar ucOrderCounter = 0 ;
2284- BitStream.Read (ucOrderCounter);
2287+ if (!BitStream.Read (ucOrderCounter))
2288+ return ;
22852289
22862290 float fDamage = 0 ;
22872291 uchar ucHitZone = 0 ;
22882292 CClientPlayer* pDamagedPlayer = NULL ;
22892293 if (BitStream.ReadBit ())
22902294 {
22912295 ElementID DamagedPlayerID = INVALID_ELEMENT_ID;
2292- BitStream.Read (fDamage );
2293- BitStream. Read (ucHitZone) ;
2294- BitStream. Read (DamagedPlayerID);
2296+ if (! BitStream.Read (fDamage ) || !BitStream. Read (ucHitZone) || !BitStream. Read (DamagedPlayerID))
2297+ return ;
2298+
22952299 pDamagedPlayer = DynamicCast<CClientPlayer>(CElementIDs::GetElement (DamagedPlayerID));
22962300 }
22972301
@@ -2328,15 +2332,20 @@ void CNetAPI::ReadWeaponBulletsync(CClientPlayer* pPlayer, NetBitStreamInterface
23282332{
23292333 // Read the bulletsync data
23302334 ElementID elementID;
2331- BitStream.Read (elementID);
2335+ if (!BitStream.Read (elementID))
2336+ return ;
2337+
23322338 CClientWeapon* pWeapon = DynamicCast<CClientWeapon>(CElementIDs::GetElement (elementID));
2339+ if (!pWeapon || !CClientWeaponManager::HasWeaponBulletSync (pWeapon->GetWeaponType ()))
2340+ return ;
23332341
23342342 CVector vecStart, vecEnd;
2335- BitStream.Read ((char *)&vecStart, sizeof (CVector));
2336- BitStream. Read (( char *)&vecEnd, sizeof (CVector)) ;
2343+ if (! BitStream.Read ((char *)&vecStart, sizeof (CVector)) || !BitStream. Read (( char *)&vecEnd, sizeof (CVector)))
2344+ return ;
23372345
23382346 uchar ucOrderCounter = 0 ;
2339- BitStream.Read (ucOrderCounter);
2347+ if (!BitStream.Read (ucOrderCounter))
2348+ return ;
23402349
23412350 pWeapon->FireInstantHit (vecStart, vecEnd, false , true );
23422351}
0 commit comments