Explorar o código

Fixed potential crash on BG queue (#5900)

Daegaladh %!s(int64=4) %!d(string=hai) anos
pai
achega
b52b3c9a40
Modificáronse 3 ficheiros con 10 adicións e 5 borrados
  1. 4 4
      src/map/clif.cpp
  2. 1 1
      src/map/clif_packetdb.hpp
  3. 5 0
      src/map/packets.hpp

+ 4 - 4
src/map/clif.cpp

@@ -18181,11 +18181,11 @@ void clif_bg_queue_entry_init(struct map_session_data *sd)
 {
 	nullpo_retv(sd);
 
-	int fd = sd->fd;
+	struct PACKET_ZC_ENTRY_QUEUE_INIT p = {};
+
+	p.packetType = HEADER_ZC_ENTRY_QUEUE_INIT;
 
-	WFIFOHEAD(fd, packet_len(0x90e));
-	WFIFOW(fd,0) = 0x90e;
-	WFIFOSET(fd, packet_len(0x90e));
+	clif_send( &p, sizeof( p ), &sd->bl, SELF );
 }
 
 /// Custom Fonts (ZC_NOTIFY_FONT).

+ 1 - 1
src/map/clif_packetdb.hpp

@@ -1951,7 +1951,7 @@
 	parseable_packet(0x08E0,51,clif_parse_bg_queue_lobby_reply,2,3,27);
 	packet(0x08E1,51);
 	parseable_packet(0x090A,26,clif_parse_bg_queue_request_queue_number,2);
-	packet(0x090E,2);
+	packet( HEADER_ZC_ENTRY_QUEUE_INIT , sizeof(PACKET_ZC_ENTRY_QUEUE_INIT) );
 	packet(0x0977,14); //Monster HP Bar
 	parseable_packet(0x0916,26,clif_parse_GuildInvite2,2);
 	parseable_packet(0x091d,41,clif_parse_PartyBookingRegisterReq,2,4,6);

+ 5 - 0
src/map/packets.hpp

@@ -207,6 +207,10 @@ struct PACKET_ZC_UNCONFIRMED_SPIRITS3{
 	uint16 amount;
 } __attribute__((packed));
 
+struct PACKET_ZC_ENTRY_QUEUE_INIT {
+	int16 packetType;
+} __attribute__((packed));
+
 // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
 #if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
 	#pragma pack( pop )
@@ -248,6 +252,7 @@ DEFINE_PACKET_HEADER(ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER, 0x824)
 	DEFINE_PACKET_HEADER(ZC_SEARCH_STORE_INFO_ACK, 0x836)
 #endif
 DEFINE_PACKET_HEADER(CZ_SSILIST_ITEM_CLICK, 0x83c)
+DEFINE_PACKET_HEADER(ZC_ENTRY_QUEUE_INIT, 0x90e);
 DEFINE_PACKET_HEADER(CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ac)
 DEFINE_PACKET_HEADER(ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ad)
 DEFINE_PACKET_HEADER(CZ_REQ_APPLY_BARGAIN_SALE_ITEM, 0x9ae)