Advertisement
Kapa3a

fix exploid HEADER_CG_CHARACTER_SELECT

Nov 29th, 2023
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | Source Code | 0 0
  1. Vulnerabilitate noua , exploit de tip DoS . [ HEADER_CG_CHARACTER_SELECT ]
  2.  
  3. 1.intra in sursa game --> game/src (input_login.cpp) si cauta :
  4.  
  5. db_clientdesc->DBPacket(HEADER_GD_PLAYER_LOAD, d->GetHandle(), &player_load_packet, sizeof(TPlayerLoadPacket));
  6.  
  7. *Inlocuie cu :
  8.  
  9. // fix exploid by kapa3a
  10.     if (player_load_packet.player_id == 0)
  11.     {
  12.     sys_err("invalid player_id from account %d\n",c_r.id);
  13.     d->DelayedDisconnect(0);
  14.     return;
  15.     }
  16.     db_clientdesc->DBPacket(HEADER_GD_PLAYER_LOAD, d->GetHandle(), &player_load_packet, sizeof(TPlayerLoadPacket));
  17. // fix exploid by kapa3a
  18.  
  19.  
  20. 2.Cauta :
  21.  
  22. void CInputLogin::CharacterSelect(LPDESC d, const char * data)
  23.  
  24.  
  25. *Deasupra la :
  26.  
  27. TPlayerLoadPacket player_load_packet;
  28.  
  29. *Adauga :
  30.  
  31.     if (!c_r.players[pinfo->index].dwID) // FIXME
  32. {
  33.     sys_err("No player id for login %s", c_r.login);
  34.     d->SetPhase(PHASE_CLOSE);
  35.     return;
  36.     }
  37.    
  38. 3.Cauta :
  39.  
  40. void CInputLogin::ChangeName(LPDESC d, const char * data)
  41.  
  42. *Deasupra la :
  43.  
  44.     if (!c_r.players[p->index].bChangeName)
  45.         return;
  46.  
  47. *Adauga :
  48.  
  49.     if (p->index >= PLAYER_PER_ACCOUNT) // FIXME overflow
  50.     {
  51.         sys_err("index overflow %d, login: %s", p->index, c_r.login);
  52.         d->SetPhase(PHASE_CLOSE);
  53.         return;
  54.     }        
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement