Skip to content

Fix guild lvl-up packet parsing causing client exit in ML

Fedja Beader requested to merge specing/manaplus:guild_lvl_up into master

What happened:

  1. herc evol sends 0x100 as packet ID offset
  2. 0x100 is added to 0x0062 of SMSG_CHAR_PASSWORD_RESPONSE
  3. SMSG_CHAR_PASSWORD_RESPONSE is then inserted into 0x162 slot of packet map, shadowing SMSG_GUILD_SKILL_INFO
  4. on guild lvl-up, server sends this in SMSG_GUILD_SKILL_INFO
  5. ManaVerse exits in confusion.

Note 1: due to popupmenu paste not working in change password dialog, tested password change only with invalid old password, which worked (opened error dialog instead of client exiting).

Note 2: Some packet handlers are bound using &Ea::LoginRecv prefix, this one had &LoginRecv and this was kept this way (uses vtable lookup?).

TODO: SMSG_CHAR_PASSWORD_RESPONSE seems to be something about password changes, but I could not find this packet either in TMWA or herc. Still, I need to test if these still work on all active servers Tested.

Edited by Fedja Beader

Merge request reports