Commit 09df8fd8 authored by msramek's avatar msramek Committed by Commit bot

Fix a memory leak in BrowsingDataFilterBuilder

BrowsingDataFilterBuilder is an abstract class that has a non-virtual
destructor. This is a mistake - since the class and its subclasses are
non-copyable, they're typically handled by pointers; calling delete on
such a pointer will only call the base class destructor, not those of
the subclasses, and thus leak any attributes of the subclasses.

This was spotted by ASan in the context of the CL implementing the task
scheduler for BrowsingDataRemover. When a task was finished processing,
its destructor did not correctly destroy the contained
BrowsingDataFilterBuilder.

BUG=630327

Review-Url: https://codereview.chromium.org/2185453004
Cr-Commit-Position: refs/heads/master@{#407765}
parent da9a2575
......@@ -39,7 +39,7 @@ class BrowsingDataFilterBuilder {
// Constructs a filter with the given |mode| - whitelist or blacklist.
explicit BrowsingDataFilterBuilder(Mode mode);
~BrowsingDataFilterBuilder();
virtual ~BrowsingDataFilterBuilder();
// Sets the |mode| of the filter.
void SetMode(Mode mode);
......
......@@ -28,7 +28,7 @@ class OriginFilterBuilder : public BrowsingDataFilterBuilder {
// Constructs a filter with the given |mode| - whitelist or blacklist.
explicit OriginFilterBuilder(Mode mode);
~OriginFilterBuilder();
~OriginFilterBuilder() override;
// Adds the |origin| to the (white- or black-) list.
void AddOrigin(const url::Origin& origin);
......
......@@ -47,7 +47,7 @@ class RegistrableDomainFilterBuilder : public BrowsingDataFilterBuilder {
// Constructs a filter with the given |mode| - whitelist or blacklist.
explicit RegistrableDomainFilterBuilder(Mode mode);
~RegistrableDomainFilterBuilder();
~RegistrableDomainFilterBuilder() override;
// Adds a registerable domain to the (white- or black-) list. This is expected
// to not include subdomains, so basically tld+1. This can also be an IP
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment