diff options
author | GitLab Release Tools Bot <robert+release-tools@gitlab.com> | 2019-09-26 13:53:26 +0000 |
---|---|---|
committer | GitLab Release Tools Bot <robert+release-tools@gitlab.com> | 2019-09-26 13:53:26 +0000 |
commit | a31eb11c90c3bf00cac0d6f2ec2c3bd1aa96609f (patch) | |
tree | 6eb99c1f541b536e156fb7b14d52a5b68ff1bbf9 /app | |
parent | 9c86027ec0556f59cef63cfe352cd30fafeaa13b (diff) | |
parent | bc97126e076ad859f18d88403b89573604d49ea7 (diff) | |
download | gitlab-ce-a31eb11c90c3bf00cac0d6f2ec2c3bd1aa96609f.tar.gz |
Merge branch 'security-mermaid-block' into '12-3-stable'
Only render fixed number of mermaid blocks
See merge request gitlab/gitlabhq!3411
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/behaviors/markdown/render_mermaid.js | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/app/assets/javascripts/behaviors/markdown/render_mermaid.js b/app/assets/javascripts/behaviors/markdown/render_mermaid.js index 27708504791..c3e2c09f1d5 100644 --- a/app/assets/javascripts/behaviors/markdown/render_mermaid.js +++ b/app/assets/javascripts/behaviors/markdown/render_mermaid.js @@ -36,6 +36,8 @@ export default function renderMermaid($els) { securityLevel: 'strict', }); + let renderedChars = 0; + $els.each((i, el) => { // Mermaid doesn't like `<br />` tags, so collapse all like tags into `<br>`, which is parsed correctly. const source = el.textContent.replace(/<br\s*\/>/g, '<br>'); @@ -45,7 +47,7 @@ export default function renderMermaid($els) { * prevent mermaidjs from hanging up the entire thread and * causing a DoS. */ - if (source && source.length > MAX_CHAR_LIMIT) { + if ((source && source.length > MAX_CHAR_LIMIT) || renderedChars > MAX_CHAR_LIMIT) { el.textContent = sprintf( __( 'Cannot render the image. Maximum character count (%{charLimit}) has been exceeded.', @@ -55,6 +57,7 @@ export default function renderMermaid($els) { return; } + renderedChars += source.length; // Remove any extra spans added by the backend syntax highlighting. Object.assign(el, { textContent: source }); |