From b1f922363f20537c7131c75e92c119eb5c8fa1db Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Mon, 30 Nov 2020 15:52:05 +0700 Subject: [PATCH 1/3] fix(android/app): Sanitize Sentry navigation breadcrumbs --- .../com/tavultesoft/kmapro/MainActivity.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java index 22ef98e40f..57c35ae6b5 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java @@ -90,6 +90,7 @@ import android.widget.SeekBar; import android.widget.TextView; import android.widget.Toast; +import io.sentry.SentryLevel; import io.sentry.android.core.SentryAndroid; public class MainActivity extends AppCompatActivity implements OnKeyboardEventListener, OnKeyboardDownloadEventListener, @@ -129,6 +130,23 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi checkSendCrashReport(); if (KMManager.getMaySendCrashReport()) { SentryAndroid.init(context, options -> { + options.setBeforeBreadcrumb((breadcrumb, hint) -> { + String NAVIGATION_PATTERN = "^(.*)?(keyboard\\.html#[^-]+)-(.)*$"; + if ("navigation".equals(breadcrumb.getCategory()) && breadcrumb.getLevel() == SentryLevel.INFO && + ((breadcrumb.getData("from") != null) || (breadcrumb.getData("to") != null)) ) { + // Sanitize navigation breadcrumbs + String dataFrom = String.valueOf(breadcrumb.getData("from")); + dataFrom = dataFrom.replaceAll(NAVIGATION_PATTERN, "$1$2"); + breadcrumb.setData("from", dataFrom); + String dataTo = String.valueOf(breadcrumb.getData("to")); + dataTo = dataTo.replaceAll(NAVIGATION_PATTERN, "$1$2"); + breadcrumb.setData("to", dataTo); + + return breadcrumb; + } else { + return breadcrumb; + } + }); options.setRelease("release-" + com.tavultesoft.kmapro.BuildConfig.VERSION_NAME); options.setEnvironment(com.tavultesoft.kmapro.BuildConfig.VERSION_ENVIRONMENT); }); From bee95d9fbea5b30112125a923b28f2fca41a8e87 Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Mon, 30 Nov 2020 16:20:46 +0700 Subject: [PATCH 2/3] fix(oem/fv/android): Sanitize Sentry navigation breadcrumbs --- .../firstvoices/keyboards/MainActivity.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/oem/firstvoices/android/app/src/main/java/com/firstvoices/keyboards/MainActivity.java b/oem/firstvoices/android/app/src/main/java/com/firstvoices/keyboards/MainActivity.java index 4e254c74a1..172e3c76ea 100644 --- a/oem/firstvoices/android/app/src/main/java/com/firstvoices/keyboards/MainActivity.java +++ b/oem/firstvoices/android/app/src/main/java/com/firstvoices/keyboards/MainActivity.java @@ -13,6 +13,7 @@ import android.webkit.WebViewClient; import androidx.appcompat.app.AppCompatActivity; +import io.sentry.SentryLevel; import io.sentry.android.core.SentryAndroid; import com.tavultesoft.kmea.*; @@ -28,8 +29,25 @@ public class MainActivity extends AppCompatActivity { super.onCreate(savedInstanceState); SentryAndroid.init(this, options -> { - options.setRelease("release-"+com.firstvoices.keyboards.BuildConfig.VERSION_NAME); - options.setEnvironment(com.firstvoices.keyboards.BuildConfig.VERSION_ENVIRONMENT); + options.setBeforeBreadcrumb((breadcrumb, hint) -> { + String NAVIGATION_PATTERN = "^(.*)?(keyboard\\.html#[^-]+)-(.)*$"; + if ("navigation".equals(breadcrumb.getCategory()) && breadcrumb.getLevel() == SentryLevel.INFO && + ((breadcrumb.getData("from") != null) || (breadcrumb.getData("to") != null)) ) { + // Sanitize navigation breadcrumbs + String dataFrom = String.valueOf(breadcrumb.getData("from")); + dataFrom = dataFrom.replaceAll(NAVIGATION_PATTERN, "$1$2"); + breadcrumb.setData("from", dataFrom); + String dataTo = String.valueOf(breadcrumb.getData("to")); + dataTo = dataTo.replaceAll(NAVIGATION_PATTERN, "$1$2"); + breadcrumb.setData("to", dataTo); + + return breadcrumb; + } else { + return breadcrumb; + } + }); + options.setRelease("release-"+com.firstvoices.keyboards.BuildConfig.VERSION_NAME); + options.setEnvironment(com.firstvoices.keyboards.BuildConfig.VERSION_ENVIRONMENT); }); setContentView(R.layout.activity_main); From 25084928a1bddae5114f71df25d00e93ca85e611 Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Tue, 1 Dec 2020 07:59:25 +0700 Subject: [PATCH 3/3] Update android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java Incorporate suggestion Co-authored-by: Marc Durdin --- .../src/main/java/com/tavultesoft/kmapro/MainActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java index 57c35ae6b5..06cb967769 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java @@ -131,7 +131,7 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi if (KMManager.getMaySendCrashReport()) { SentryAndroid.init(context, options -> { options.setBeforeBreadcrumb((breadcrumb, hint) -> { - String NAVIGATION_PATTERN = "^(.*)?(keyboard\\.html#[^-]+)-(.)*$"; + String NAVIGATION_PATTERN = "^(.*)?(keyboard\\.html#[^-]+)-.*$"; if ("navigation".equals(breadcrumb.getCategory()) && breadcrumb.getLevel() == SentryLevel.INFO && ((breadcrumb.getData("from") != null) || (breadcrumb.getData("to") != null)) ) { // Sanitize navigation breadcrumbs @@ -1044,4 +1044,4 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi outStream.flush(); outStream.close(); } -} \ No newline at end of file +}