Redact file paths with escaped slashes
This commit is contained in:
parent
d41e3cd6fc
commit
432a6ebd7f
2 changed files with 21 additions and 0 deletions
|
@ -38,12 +38,14 @@ exports._redactPath = (filePath) => {
|
||||||
exports._pathToRegExp = (filePath) => {
|
exports._pathToRegExp = (filePath) => {
|
||||||
try {
|
try {
|
||||||
const pathWithNormalizedSlashes = filePath.replace(/\//g, '\\');
|
const pathWithNormalizedSlashes = filePath.replace(/\//g, '\\');
|
||||||
|
const pathWithEscapedSlashes = filePath.replace(/\\/g, '\\\\');
|
||||||
const urlEncodedPath = encodeURI(filePath);
|
const urlEncodedPath = encodeURI(filePath);
|
||||||
// Safe `String::replaceAll`:
|
// Safe `String::replaceAll`:
|
||||||
// https://github.com/lodash/lodash/issues/1084#issuecomment-86698786
|
// https://github.com/lodash/lodash/issues/1084#issuecomment-86698786
|
||||||
const patternString = [
|
const patternString = [
|
||||||
filePath,
|
filePath,
|
||||||
pathWithNormalizedSlashes,
|
pathWithNormalizedSlashes,
|
||||||
|
pathWithEscapedSlashes,
|
||||||
urlEncodedPath,
|
urlEncodedPath,
|
||||||
].map(escapeRegExp).join('|');
|
].map(escapeRegExp).join('|');
|
||||||
return new RegExp(patternString, 'g');
|
return new RegExp(patternString, 'g');
|
||||||
|
|
|
@ -105,5 +105,24 @@ describe('Privacy', () => {
|
||||||
'path2 [REDACTED]\\js\\background.js.';
|
'path2 [REDACTED]\\js\\background.js.';
|
||||||
assert.equal(actual, expected);
|
assert.equal(actual, expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should redact stack traces with escaped backslashes', () => {
|
||||||
|
const testPath = 'C:\\Users\\Meow\\AppData\\Local\\Programs\\signal-desktop-beta';
|
||||||
|
const modifiedTestPath =
|
||||||
|
'C:\\\\Users\\\\Meow\\\\AppData\\\\Local\\\\Programs\\\\signal-desktop-beta';
|
||||||
|
const text = 'This is a log line with sensitive information:\n' +
|
||||||
|
`path1 ${testPath}\\main.js\n` +
|
||||||
|
'phone1 +12223334455 ipsum\n' +
|
||||||
|
'group1 group(123456789) doloret\n' +
|
||||||
|
`path2 ${modifiedTestPath}\\js\\background.js.`;
|
||||||
|
|
||||||
|
const actual = Privacy._redactPath(testPath)(text);
|
||||||
|
const expected = 'This is a log line with sensitive information:\n' +
|
||||||
|
'path1 [REDACTED]\\main.js\n' +
|
||||||
|
'phone1 +12223334455 ipsum\n' +
|
||||||
|
'group1 group(123456789) doloret\n' +
|
||||||
|
'path2 [REDACTED]\\js\\background.js.';
|
||||||
|
assert.equal(actual, expected);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue