diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index f33418a23..76c2dd57b 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -1165,8 +1165,9 @@ function handleMacCrashFileRead(err: NodeJS.ErrnoException | undefined | null, d logMacCrashTelemetry(data); } -function containsUnexpectedTelemetryCharacter(str: string): boolean { - return str.includes("/") || str.includes("\\") || str.includes("@"); +function containsFilteredTelemetryData(str: string): boolean { + const regex: RegExp = /(key|token|sig|secret|signature|password|passwd|pwd|android:value)[^a-zA-Z0-9]/i; + return regex.test(str); } async function handleCrashFileRead(crashDirectory: string, crashFile: string, crashDate: Date, err: NodeJS.ErrnoException | undefined | null, data: string): Promise { @@ -1197,10 +1198,10 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr if (pendingCrashLogLine === "ENDLOG") { break; } - if (!containsUnexpectedTelemetryCharacter(pendingCrashLogLine)) { - crashLog += pendingCrashLogLine + "\n"; + if (containsFilteredTelemetryData(pendingCrashLogLine)) { + crashLog += "?\n"; } else { - crashLog += "\n"; + crashLog += pendingCrashLogLine + "\n"; } } crashLog = crashLog.trimEnd(); @@ -1255,12 +1256,8 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr funcStr = funcStr.replace(/, std::allocator/g, ""); } } - if (funcStr.includes("/")) { - funcStr = ""; - } else if (funcStr.includes("\\")) { - funcStr = ""; - } else if (funcStr.includes("@")) { - funcStr = ""; + if (containsFilteredTelemetryData(funcStr)) { + funcStr = "?"; } else if (!validFrameFound && (funcStr.startsWith("crash_handler(") || funcStr.startsWith("_sigtramp"))) { continue; // Skip these on early frames. } @@ -1271,10 +1268,10 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr const offsetPos2: number = offsetPos + offsetStr.length; if (isMac) { const pendingOffset: string = line.substring(offsetPos2); - if (!containsUnexpectedTelemetryCharacter(pendingOffset)) { - crashCallStack += pendingOffset; + if (containsFilteredTelemetryData(pendingOffset)) { + crashCallStack += "?"; } else { - crashCallStack += ""; + crashCallStack += pendingOffset; } const startAddressPos: number = line.indexOf("0x"); if (startAddressPos === -1 || startAddressPos >= startPos) { @@ -1290,10 +1287,10 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr continue; // unexpected } const pendingOffset: string = line.substring(offsetPos2, endPos); - if (!containsUnexpectedTelemetryCharacter(pendingOffset)) { - crashCallStack += pendingOffset; + if (containsFilteredTelemetryData(pendingOffset)) { + crashCallStack += "?"; } else { - crashCallStack += ""; + crashCallStack += pendingOffset; } } } @@ -1312,8 +1309,8 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr data = data.substring(0, 8191) + "…"; } - if (containsUnexpectedTelemetryCharacter(addressData)) { - addressData = ""; + if (containsFilteredTelemetryData(addressData)) { + addressData = "?"; } logCppCrashTelemetry(data, addressData, crashLog);