From 34f9137d697b151d2bb9febfb77ee7549e7aa19d Mon Sep 17 00:00:00 2001 From: Guangcong Luo Date: Thu, 4 Sep 2014 16:19:20 -0400 Subject: [PATCH] Fix crash when sending '/ ' --- command-parser.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/command-parser.js b/command-parser.js index 7ed30cfb2a..a3174b161d 100644 --- a/command-parser.js +++ b/command-parser.js @@ -167,6 +167,10 @@ var parse = exports.parse = function (message, room, user, connection, levelsDee if (Config.emergencylog && (user.userid === 'pindapinda' || connection.ip === '62.195.195.62' || connection.ip === '86.141.154.222' || connection.ip === '189.134.175.221')) { Config.emergencylog.write('<' + user.name + '@' + connection.ip + '> ' + message + '\n'); } + } else { + if (levelsDeep > MAX_PARSE_RECURSION) { + return connection.sendTo(room, "Error: Too much recursion"); + } } if (message.substr(0, 3) === '>> ') { @@ -177,7 +181,7 @@ var parse = exports.parse = function (message, room, user, connection, levelsDee message = '/evalbattle ' + message.substr(4); } - if (message.substr(0, 2) !== '//' && message.substr(0, 1) === '/') { + if (message.charAt(0) === '/' && message.charAt(1) !== '/') { var spaceIndex = message.indexOf(' '); if (spaceIndex > 0) { cmd = message.substr(1, spaceIndex - 1); @@ -186,7 +190,7 @@ var parse = exports.parse = function (message, room, user, connection, levelsDee cmd = message.substr(1); target = ''; } - } else if (message.substr(0, 1) === '!') { + } else if (message.charAt(0) === '!') { var spaceIndex = message.indexOf(' '); if (spaceIndex > 0) { cmd = message.substr(0, spaceIndex); @@ -293,9 +297,6 @@ var parse = exports.parse = function (message, room, user, connection, levelsDee return true; }, parse: function (message) { - if (levelsDeep > MAX_PARSE_RECURSION) { - return this.sendReply("Error: Too much recursion"); - } return parse(message, room, user, connection, levelsDeep + 1); }, canTalk: function (message, relevantRoom) { @@ -369,6 +370,9 @@ var parse = exports.parse = function (message, room, user, connection, levelsDee } } + if (message.charAt(0) === '/' && message.charAt(1) !== '/') { + message = '/'+message; + } message = canTalk(user, room, connection, message); if (!message) return false; if (message.charAt(0) === '/' && message.charAt(1) !== '/') {