From 8e3d22ca7a89d8ccc6ddfc30eccdb91d7de6d1e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 26 Jan 2023 09:08:15 +0100 Subject: [PATCH] Chore: Fixes cleanNeedle regex to be more specific (#61967) * Chore: Fixes code sec warning for frontend regex * Update text.ts * Update text.ts --- packages/grafana-data/src/text/text.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/grafana-data/src/text/text.ts b/packages/grafana-data/src/text/text.ts index 5b98ba11a6a..0791641a9dc 100644 --- a/packages/grafana-data/src/text/text.ts +++ b/packages/grafana-data/src/text/text.ts @@ -24,7 +24,7 @@ export function findHighlightChunksInText({ } const cleanNeedle = (needle: string): string => { - return needle.replace(/[[{(][\w,.-?:*+]+$/, ''); + return needle.replace(/[[{(][\w,.\/:;<=>?:*+]+$/, ''); }; /** @@ -35,14 +35,17 @@ export function findMatchesInText(haystack: string, needle: string): TextMatch[] if (!haystack || !needle) { return []; } + const matches: TextMatch[] = []; const { cleaned, flags } = parseFlags(cleanNeedle(needle)); let regexp: RegExp; + try { regexp = new RegExp(`(?:${cleaned})`, flags); } catch (error) { return matches; } + haystack.replace(regexp, (substring, ...rest) => { if (substring) { const offset = rest[rest.length - 2]; @@ -55,6 +58,7 @@ export function findMatchesInText(haystack: string, needle: string): TextMatch[] } return ''; }); + return matches; }