summaryrefslogtreecommitdiff
path: root/src/map/log.c
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-02-02 19:59:39 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-02-02 19:59:39 +0000
commitd2f88f0450a23f8b9cd9579451059acb08f14f52 (patch)
treee45661b9f90638fab7fb4eee963dc75913261fc7 /src/map/log.c
parent46960269824ddc60a38052ef3187f6c5a9ad5acd (diff)
downloadhercules-d2f88f0450a23f8b9cd9579451059acb08f14f52.tar.gz
hercules-d2f88f0450a23f8b9cd9579451059acb08f14f52.tar.bz2
hercules-d2f88f0450a23f8b9cd9579451059acb08f14f52.tar.xz
hercules-d2f88f0450a23f8b9cd9579451059acb08f14f52.zip
- The define MESSAGE_SIZE was wrong! It is only used for input boxes. Therefore now it is only used for Vending, Talkie box and Graffiti
- Added new define CHAT_SIZE which holds the max length that a client can send from the chat buffer. This value is NAME_LENGTH + 3 (the ' : ') + 70 (the actual text). - Added define msg_len_check which crops incoming client text if it's longer than CHAT_SIZE. Added cropping to all incoming messages except normal chatting which is already accounted for. - Removed variable talkie_mes, this is now handled by sd->message - Cleaned up parser functions for /b /lb, gm kick, /shift, /recall - Added crash protection to the logging functions when they receive a too long string. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9778 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/log.c')
-rw-r--r--src/map/log.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/map/log.c b/src/map/log.c
index 9c937401f..7147d5aed 100644
--- a/src/map/log.c
+++ b/src/map/log.c
@@ -12,6 +12,7 @@
#include "itemdb.h"
#include "map.h"
#include "log.h"
+#include "battle.h"
#ifndef SQL_DEBUG
#define mysql_query(_x, _y) mysql_real_query(_x, _y, strlen(_y)) //supports ' in names and runs faster [Kevin]
@@ -273,7 +274,7 @@ int log_atcommand(struct map_session_data *sd, const char *message)
FILE *logfp;
#ifndef TXT_ONLY
char t_name[NAME_LENGTH*2];
- char t_msg[MESSAGE_SIZE*2+1]; //These are the contents of an @ call, so there shouldn't be overflow danger here?
+ char t_msg[CHAT_SIZE*2+1]; //These are the contents of an @ call, so there shouldn't be overflow danger here?
#endif
if(!log_config.enable_logs)
@@ -282,6 +283,12 @@ int log_atcommand(struct map_session_data *sd, const char *message)
#ifndef TXT_ONLY
if(log_config.sql_logs > 0)
{
+ if (strlen(message) > CHAT_SIZE) {
+ if (battle_config.error_log)
+ ShowError("log atcommand: Received message too long from player %s (%d:%d)!\n",
+ sd->status.name, sd->status.account_id, sd->status.char_id);
+ return 0;
+ }
sprintf(tmp_sql, "INSERT DELAYED INTO `%s` (`atcommand_date`, `account_id`, `char_id`, `char_name`, `map`, `command`) VALUES(NOW(), '%d', '%d', '%s', '%s', '%s') ",
log_config.log_gm_db, sd->status.account_id, sd->status.char_id, jstrescapecpy(t_name, sd->status.name), mapindex_id2name(sd->mapindex), jstrescapecpy(t_msg, (char *)message));
if(mysql_query(&logmysql_handle, tmp_sql))
@@ -358,7 +365,7 @@ int log_chat(char *type, int type_id, int src_charid, int src_accid, char *map,
FILE *logfp;
#ifndef TXT_ONLY
char t_charname[NAME_LENGTH*2];
- char t_msg[MESSAGE_SIZE*2+1]; //Chat line fully escaped, with an extra space just in case.
+ char t_msg[CHAT_SIZE*2+1]; //Chat line fully escaped, with an extra space just in case.
#endif
//Check ON/OFF
@@ -367,6 +374,12 @@ int log_chat(char *type, int type_id, int src_charid, int src_accid, char *map,
#ifndef TXT_ONLY
if(log_config.sql_logs > 0){
+ if (strlen(message) > CHAT_SIZE) {
+ if (battle_config.error_log)
+ ShowError("log chat: Received message too long from type %d (%d:%d)!\n",
+ type_id, src_accid, src_charid);
+ return 0;
+ }
sprintf(tmp_sql, "INSERT DELAYED INTO `%s` (`time`, `type`, `type_id`, `src_charid`, `src_accountid`, `src_map`, `src_map_x`, `src_map_y`, `dst_charname`, `message`) VALUES (NOW(), '%s', '%d', '%d', '%d', '%s', '%d', '%d', '%s', '%s')",
log_config.log_chat_db, type, type_id, src_charid, src_accid, map, x, y, jstrescapecpy(t_charname, dst_charname), jstrescapecpy(t_msg, message));