From 90a3e7f927238ef8c98ca748702f1bc258683b60 Mon Sep 17 00:00:00 2001 From: Darshan Sen Date: Tue, 7 Sep 2021 23:39:48 +0530 Subject: [PATCH] feat: warn when crash key name is longer than 39 bytes (#30742) Signed-off-by: Darshan Sen --- shell/common/crash_keys.cc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/shell/common/crash_keys.cc b/shell/common/crash_keys.cc index 8dfaee22939e..8e81db324d6f 100644 --- a/shell/common/crash_keys.cc +++ b/shell/common/crash_keys.cc @@ -17,7 +17,9 @@ #include "electron/buildflags/buildflags.h" #include "electron/fuses.h" #include "shell/common/electron_constants.h" +#include "shell/common/node_includes.h" #include "shell/common/options_switches.h" +#include "shell/common/process_util.h" #include "third_party/crashpad/crashpad/client/annotation.h" #include "gin/wrappable.h" @@ -93,9 +95,17 @@ static_assert(kMaxCrashKeyNameLength <= crashpad::Annotation::kNameMaxLength, void SetCrashKey(const std::string& key, const std::string& value) { // Chrome DCHECK()s if we try to set an annotation with a name longer than // the max. - // TODO(nornagon): warn the developer (via console.warn) when this happens. - if (key.size() >= kMaxCrashKeyNameLength) + if (key.size() >= kMaxCrashKeyNameLength) { + node::Environment* env = + node::Environment::GetCurrent(JavascriptEnvironment::GetIsolate()); + EmitWarning(env, + "The crash key name, \"" + key + "\", is longer than " + + std::to_string(kMaxCrashKeyNameLength) + + " bytes, ignoring it.", + "electron"); return; + } + auto& crash_key_names = GetExtraCrashKeyNames(); auto iter = std::find(crash_key_names.begin(), crash_key_names.end(), key);