2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2025-09-12 21:10:47 +08:00

FIX: censored regex words were replacing other text that shouldn't be censored

This commit is contained in:
Neil Lalonde 2018-01-24 12:33:38 -05:00
parent 594efa37b6
commit dc97239040
2 changed files with 15 additions and 3 deletions

View file

@ -36,13 +36,14 @@ export function censorFn(censoredWords, censoredPattern, replacementLetter, watc

try {
let m = censorRegexp.exec(text);
const fourCharReplacement = new Array(5).join(replacementLetter);

while (m && m[0]) {
if (m[0].length > original.length) { return original; } // regex is dangerous
const replacement = new Array(m[0].length+1).join(replacementLetter);
if (watchedWordsRegularExpressions) {
text = text.replace(new RegExp(`(${escapeRegexp(m[0])})(?![^\\(]*\\))`, "ig"), replacement);
text = text.replace(censorRegexp, fourCharReplacement);
} else {
const replacement = new Array(m[0].length+1).join(replacementLetter);
text = text.replace(new RegExp(`(\\b${escapeRegexp(m[0])}\\b)(?![^\\(]*\\))`, "ig"), replacement);
}
m = censorRegexp.exec(text);