Merge pull request #526 from glowing-bear/fix-filter-escaping-issues

Fix filter issues
This commit is contained in:
David Cormier 2015-01-03 10:39:52 -05:00
commit a968d2833f
1 changed files with 11 additions and 2 deletions

View File

@ -30,6 +30,13 @@ weechat.filter('irclinky', ['$filter', function($filter) {
return text;
}
// First, escape entities to prevent escaping issues because it's a bad idea
// to parse/modify HTML with regexes, which we do a couple of lines down...
var entities = {"<": "&lt;", ">": "&gt;", '"': '&quot;', "'": '&#39;', "&": "&amp;", "/": '&#x2F;'};
text = text.replace(/[<>"'&\/]/g, function (char) {
return entities[char];
});
// This regex in no way matches all IRC channel names (they could also begin with &, + or an
// exclamation mark followed by 5 alphanumeric characters, and are bounded in length by 50).
// However, it matches all *common* IRC channels while trying to minimise false positives.
@ -87,13 +94,15 @@ weechat.filter('DOMfilter', ['$filter', '$sce', function($filter, $sce) {
} else {
parent.appendChild(newNode);
}
return newNode;
}
}
// recurse
if (node === undefined || node === null) return;
node = node.firstChild;
while (node) {
process(node);
node = node.nextSibling;
var nextNode = process(node);
node = (nextNode ? nextNode : node).nextSibling;
}
};