diff --git a/js/sim.js b/js/sim.js
index fa81c9e56..b0a3526c1 100644
--- a/js/sim.js
+++ b/js/sim.js
@@ -1694,6 +1694,9 @@ function Lobby(id, elem) {
} else if (log[i].name && log[i].action === 'battle') {
var id = log[i].room;
var matches = selfR.parseBattleID(id);
+ if (!matches) {
+ continue; // bogus room ID could be used to inject JavaScript
+ }
var format = (matches ? matches[1] : '');
selfR.rooms.push({
id: id,
@@ -1879,6 +1882,9 @@ function Lobby(id, elem) {
for (var id in data.rooms) {
var room = data.rooms[id];
var matches = selfR.parseBattleID(id);
+ if (!matches) {
+ continue; // bogus room ID could be used to inject JavaScript
+ }
room.format = (matches ? matches[1] : '');
room.id = id;
selfR.rooms.unshift(room);
@@ -1903,6 +1909,9 @@ function Lobby(id, elem) {
for (var id in data.rooms) {
var roomData = data.rooms[id];
var matches = selfR.parseBattleID(id);
+ if (!matches) {
+ continue; // bogus room ID could be used to inject JavaScript
+ }
var format = (matches ? '[' + matches[1] + ']
' : '');
var roomDesc = format + '' + Tools.escapeHTML(roomData.p1) + ' vs. ' + Tools.escapeHTML(roomData.p2) + '';
if (!roomData.p1) {