From 71bb153d66a46c639dcd3aa8d1aa61b3627f92dc Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Wed, 4 Nov 2020 13:17:06 +0100 Subject: [PATCH 1/2] fix: redact file paths error reports --- .../javascripts/services/errorReporting.ts | 51 ++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/services/errorReporting.ts b/app/assets/javascripts/services/errorReporting.ts index 83ffd015b..7aeb87810 100644 --- a/app/assets/javascripts/services/errorReporting.ts +++ b/app/assets/javascripts/services/errorReporting.ts @@ -5,6 +5,16 @@ import Bugsnag from '@bugsnag/js'; declare const __VERSION__: string; +function redactFilePath(line: string): string { + const fileName = line.match(/\w+\.(html|js)?.*/)?.[0]; + const redacted = ''; + if (fileName) { + return redacted + '/' + fileName; + } else { + return redacted; + } +} + export function startErrorReporting() { if (storage.get(StorageKey.DisableErrorReporting)) { SNLog.onError = console.error; @@ -17,14 +27,51 @@ export function startErrorReporting() { appVersion: __VERSION__, collectUserIp: false, autoTrackSessions: false, - releaseStage: isDev ? 'development' : undefined + releaseStage: isDev ? 'development' : undefined, + onError(event) { + /** + * Redact any data that could be used to identify user, + * such as file paths. + */ + if (isDesktopApplication()) { + if (event.context) { + event.context = `Desktop/${redactFilePath(event.context)}`; + } + } + + if (event.request.url?.includes('file:')) { + event.request.url = redactFilePath(event.request.url); + } + + const originalStack = event.originalError.stack; + if ( + typeof originalStack === 'string' && + originalStack.includes('file:') + ) { + event.originalError.stack = originalStack + .split('\n') + .map((line) => + line.includes('file:') ? redactFilePath(line) : line + ) + .join('\n'); + } + + for (const error of event.errors) { + for (const stackFrame of error.stacktrace) { + if (stackFrame.file.includes('file:')) { + stackFrame.file = redactFilePath(stackFrame.file); + } + } + } + }, }); + if (isDev) { SNLog.onError = console.error; } else { SNLog.onError = (error) => { Bugsnag.notify(error); - } + }; } } catch (error) { console.error('Failed to start Bugsnag.', error); From b5e828f9983f0cb2a5bb69ea6f8130f65d04eaee Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Wed, 4 Nov 2020 13:36:51 +0100 Subject: [PATCH 2/2] chore(version): 3.5.3 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0a180717c..f93127ef5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "standard-notes-web", - "version": "3.5.2", + "version": "3.5.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e19f2fa9e..5dbfe5448 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "standard-notes-web", - "version": "3.5.2", + "version": "3.5.3", "license": "AGPL-3.0-or-later", "repository": { "type": "git",