mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 09:48:11 +00:00
Browser+Ladybird+LibWeb: Prevent infinite growth of content filters
We never clear content filters on either end of the Browser-WebContent IPC connection. So when the filters change, we re-append all filters to the Vector holding them. This incidentally makes it impossible to remove a filter. Change both sides to clear their filter lists when receiving a new set of filters.
This commit is contained in:
parent
b0ffb15e13
commit
76ae60da15
5 changed files with 33 additions and 14 deletions
|
@ -121,15 +121,24 @@ static ErrorOr<void> load_content_filters()
|
|||
file_or_error = Core::File::open(DeprecatedString::formatted("{}/res/ladybird/BrowserContentFilters.txt", s_serenity_resource_root), Core::File::OpenMode::Read);
|
||||
if (file_or_error.is_error())
|
||||
return file_or_error.release_error();
|
||||
|
||||
auto file = file_or_error.release_value();
|
||||
auto ad_filter_list = TRY(Core::BufferedFile::create(move(file)));
|
||||
auto buffer = TRY(ByteBuffer::create_uninitialized(4096));
|
||||
|
||||
Vector<DeprecatedString> patterns;
|
||||
|
||||
while (TRY(ad_filter_list->can_read_line())) {
|
||||
auto line = TRY(ad_filter_list->read_line(buffer));
|
||||
if (!line.is_empty()) {
|
||||
Web::ContentFilter::the().add_pattern(line);
|
||||
}
|
||||
if (line.is_empty())
|
||||
continue;
|
||||
|
||||
TRY(patterns.try_append(line));
|
||||
}
|
||||
|
||||
auto& content_filter = Web::ContentFilter::the();
|
||||
TRY(content_filter.set_patterns(patterns));
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue