소스 검색

- Fixed buffer overflow in clif_MainChatMessage. It now prints a Debug message with the offending line.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6195 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex 19 년 전
부모
커밋
d6cb791e3c
2개의 변경된 파일7개의 추가작업 그리고 2개의 파일을 삭제
  1. 2 0
      Changelog-Trunk.txt
  2. 5 2
      src/map/clif.c

+ 2 - 0
Changelog-Trunk.txt

@@ -4,6 +4,8 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2006/04/20
+	* Fixed buffer overflow in clif_MainChatMessage. It now prints a Debug
+	  message with the offending line. [Skotlex]
 	* Cleaned up a bunch of GS/NJ skills [Skotlex]
 	* Fixed Gatling Fever crashing server when used by non players. [Skotlex]
 	* Added support for n to specify minutes to @charban.  [Skotlex]

+ 5 - 2
src/map/clif.c

@@ -4802,14 +4802,17 @@ void clif_GlobalMessage(struct block_list *bl,char *message)
  */
 void clif_MainChatMessage(char* message) {
 
-	char buf[100];
+	char buf[128];
 	int len;
 	
 	if(!message)
 		return;
 		
 	len = strlen(message)+1;
-	
+	if (len+8 > sizeof(buf)) {
+		ShowDebug("clif_MainChatMessage: Received message too long (len %d): %s\n", len, message);
+		len = sizeof(buf)-8;
+	}
 	WBUFW(buf,0)=0x8d;
 	WBUFW(buf,2)=len+8;
 	WBUFL(buf,4)=0;