Skip to content
Snippets Groups Projects
Commit 504a3b5e authored by Ahmad Sherif's avatar Ahmad Sherif
Browse files

Fix a memory leak caused by Banzai::Filter::SanitizationFilter

In Banzai::Filter::SanitizationFilter#customize_whitelist, we append
three lambdas that has reference to the SanitizationFilter instance,
which in turn (potentially) has a reference to the following chain:

context hash -> Project instance -> Repository instance -> lookup hash
-> various Rugged instances -> various mmap-ed git pack files.

All of the above is not garbage collected because the array we append
the lambdas to is the constant
HTML::Pipeline::SanitizationFilter::WHITELIST.
parent 30f5b9a5
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -108,6 +108,7 @@ v 8.11.0 (unreleased)
- Sort folders with submodules in Files view !5521
- Each `File::exists?` replaced to `File::exist?` because of deprecate since ruby version 2.2.0
- Add auto-completition in pipeline (Katarzyna Kobierska Ula Budziszewska)
- Fix a memory leak caused by Banzai::Filter::SanitizationFilter
 
v 8.10.5
- Add a data migration to fix some missing timestamps in the members table. !5670
Loading
Loading
Loading
Loading
@@ -7,7 +7,7 @@ module Banzai
UNSAFE_PROTOCOLS = %w(data javascript vbscript).freeze
 
def whitelist
whitelist = super
whitelist = super.dup
 
customize_whitelist(whitelist)
 
Loading
Loading
@@ -42,6 +42,8 @@ module Banzai
# Allow any protocol in `a` elements...
whitelist[:protocols].delete('a')
 
whitelist[:transformers] = whitelist[:transformers].dup
# ...but then remove links with unsafe protocols
whitelist[:transformers].push(remove_unsafe_links)
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment