Jump to content

ShopEx Buffer Overflow Fix


Recommended Posts

Hello community !

I found an issue when i was checking ShopEx system. If your pack_tab size is bigger than default m2 / SHOP_HOST_ITEM_MAX_NUM is bigger than default this overflow occurs.
This causes a core crash as seen in the screenshot below: 

https://metin2.download/picture/n2KPdWX19ovTCs9nLW684fA6IibqhrTu/.png

Solution

I use temp buffer for handle better but you can change 8096 too. 

To solve this problem, you can follow these steps:

// In shopEx.cpp

--------------------------------------------------------------
// Search

	char temp[8096];
	char* buf = &temp[0];
	size_t size = 0;

// Change like this

	TEMP_BUFFER buf(16 * 1024);
--------------------------------------------------------------
// Search

		memcpy(buf, &pack_tab, sizeof(pack_tab));
		buf += sizeof(pack_tab);
		size += sizeof(pack_tab);

// Change like this

		buf.write(&pack_tab, sizeof(pack_tab));
--------------------------------------------------------------
// Search

	pack.size = sizeof(pack) + sizeof(pack2) + size;

// Change like this

	pack.size = sizeof(pack) + sizeof(pack2) + buf.size();
--------------------------------------------------------------
// Search
  
	ch->GetDesc()->Packet(temp, size);

// Change like this


	ch->GetDesc()->Packet(buf.read_peek(), buf.size());

 

After following these steps, you should have overcome this problem in the ShopEx system. If you have any problems, please leave a comment.

Kind regards,

Luigina

Edited by Metin2 Dev International
Core X - External 2 Internal
  • Metin2 Dev 2
  • Facepalm 1
  • Good 3
  • Love 1
Link to comment
Share on other sites

  • Contributor

That picture says that you're calling AddGuest on a null pointer, which is why you're getting the crash.

 

Update: Ok, yeah, I think you're right(also using the TEMP_BUFFER is much better than ballparking the size of your buffers). Been too tired when writing this, don't mind my ass

Edited by Amun
  • Not Good 1
Link to comment
Share on other sites

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.