function escapeHtml(s) {
var amp = /&/g, lt = //g;
return s.toString()
.replace(amp, '&')
.replace(lt, '<')
.replace(gt, '>');
}
function escapeAttr(s) {
return s.toString()
.replace(/'/g, '%22')
.replace(/"/g, '%27');
}
function test() {
var tainted = window.name; // $ Source
var elt = document.createElement();
elt.innerHTML = "" + escapeHtml(tainted) + "";
elt.innerHTML = "
" + escapeAttr(tainted) + "
"; // $ MISSING: Alert - not flagged -
const regex = /[<>'"&]/;
if (regex.test(tainted)) {
elt.innerHTML = '' + tainted + ''; // $ Alert
} else {
elt.innerHTML = '' + tainted + '';
}
if (!regex.test(tainted)) {
elt.innerHTML = '' + tainted + '';
} else {
elt.innerHTML = '' + tainted + ''; // $ Alert
}
if (regex.exec(tainted)) {
elt.innerHTML = '' + tainted + ''; // $ Alert
} else {
elt.innerHTML = '' + tainted + '';
}
if (regex.exec(tainted) != null) {
elt.innerHTML = '' + tainted + ''; // $ Alert
} else {
elt.innerHTML = '' + tainted + '';
}
if (regex.exec(tainted) == null) {
elt.innerHTML = '' + tainted + '';
} else {
elt.innerHTML = '' + tainted + ''; // $ Alert
}
elt.innerHTML = tainted.replace(/<\w+/g, ''); // $ Alert
}