From ebacda9b0c3cc88a4ad32276d4db6a2cdb198b69 Mon Sep 17 00:00:00 2001 From: Chris Brame Date: Thu, 6 Dec 2018 01:15:20 -0500 Subject: [PATCH] fix(crash): idle users array out-of-bounds --- src/socketserver.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/socketserver.js b/src/socketserver.js index 388f6c45a..a004f48cb 100644 --- a/src/socketserver.js +++ b/src/socketserver.js @@ -628,11 +628,22 @@ var socketServer = function(ws) { utils.sendToSelf(socket, '$trudesk:chat:updateOnlineBubbles', {sortedUserList: sortedUserList, sortedIdleList: sortedIdleList}); } } else { - idleUsers[user.username].sockets.push(socket.id); - sortedUserList = _.fromPairs(_.sortBy(_.toPairs(usersOnline), function(o) { return o[0]; })); - sortedIdleList = _.fromPairs(_.sortBy(_.toPairs(idleUsers), function(o) { return o[0]; })); - - utils.sendToSelf(socket, '$trudesk:chat:updateOnlineBubbles', {sortedUserList: sortedUserList, sortedIdleList: sortedIdleList}); + var idleUser = idleUsers[user.username.toLowerCase()]; + if (!_.isUndefined(idleUser)) { + idleUser.sockets.push(socket.id); + + sortedUserList = _.fromPairs(_.sortBy(_.toPairs(usersOnline), function (o) { + return o[0]; + })); + sortedIdleList = _.fromPairs(_.sortBy(_.toPairs(idleUsers), function (o) { + return o[0]; + })); + + utils.sendToSelf(socket, '$trudesk:chat:updateOnlineBubbles', { + sortedUserList: sortedUserList, + sortedIdleList: sortedIdleList + }); + } } });