Skip to content

Commit 829820a

Browse files
committed
Fixed invalid escaping of HTML in search results
1 parent 702de82 commit 829820a

File tree

8 files changed

+13
-99
lines changed

8 files changed

+13
-99
lines changed

material/assets/javascripts/bundle.56838a2c.min.js

-29
This file was deleted.

material/assets/javascripts/bundle.56838a2c.min.js.map

-7
This file was deleted.

material/assets/javascripts/workers/search.709b4209.min.js

-48
This file was deleted.

material/assets/javascripts/workers/search.709b4209.min.js.map

-7
This file was deleted.

material/base.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ <h1>{{ page.title | d(config.site_name, true)}}</h1>
196196
"base": base_url,
197197
"features": features,
198198
"translations": {},
199-
"search": "assets/javascripts/workers/search.709b4209.min.js" | url,
199+
"search": "assets/javascripts/workers/search.409db549.min.js" | url,
200200
"version": config.extra.version or None
201201
} -%}
202202
{%- set translations = app.translations -%}
@@ -223,7 +223,7 @@ <h1>{{ page.title | d(config.site_name, true)}}</h1>
223223
</script>
224224
{% endblock %}
225225
{% block scripts %}
226-
<script src="{{ 'assets/javascripts/bundle.56838a2c.min.js' | url }}"></script>
226+
<script src="{{ 'assets/javascripts/bundle.56a63758.min.js' | url }}"></script>
227227
{% for path in config["extra_javascript"] %}
228228
<script src="{{ path | url }}"></script>
229229
{% endfor %}

src/assets/javascripts/components/search/highlight/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export function mountSearchHiglight(
8383
)
8484
])
8585
.pipe(
86-
map(([index, url]) => setupSearchHighlighter(index.config)(
86+
map(([index, url]) => setupSearchHighlighter(index.config, true)(
8787
url.searchParams.get("h")!
8888
)),
8989
map(fn => {

src/assets/javascripts/integrations/search/_/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ export class Search {
167167

168168
/* Set up document map and highlighter factory */
169169
this.documents = setupSearchDocumentMap(docs)
170-
this.highlight = setupSearchHighlighter(config)
170+
this.highlight = setupSearchHighlighter(config, false)
171171

172172
/* Set separator for tokenizer */
173173
lunr.tokenizer.separator = new RegExp(config.separator)

src/assets/javascripts/integrations/search/highlighter/index.ts

+9-4
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,12 @@ export type SearchHighlightFactoryFn = (query: string) => SearchHighlightFn
5454
* Create a search highlighter
5555
*
5656
* @param config - Search index configuration
57+
* @param escape - Whether to escape HTML
5758
*
5859
* @returns Search highlight factory function
5960
*/
6061
export function setupSearchHighlighter(
61-
config: SearchIndexConfig
62+
config: SearchIndexConfig, escape: boolean
6263
): SearchHighlightFactoryFn {
6364
const separator = new RegExp(config.separator, "img")
6465
const highlight = (_: unknown, data: string, term: string) => {
@@ -79,8 +80,12 @@ export function setupSearchHighlighter(
7980
})`, "img")
8081

8182
/* Highlight string value */
82-
return value => escapeHTML(value)
83-
.replace(match, highlight)
84-
.replace(/<\/mark>(\s+)<mark[^>]*>/img, "$1")
83+
return value => (
84+
escape
85+
? escapeHTML(value)
86+
: value
87+
)
88+
.replace(match, highlight)
89+
.replace(/<\/mark>(\s+)<mark[^>]*>/img, "$1")
8590
}
8691
}

0 commit comments

Comments
 (0)