mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-12 10:40:39 +09:00
LibWeb: Hold a strong ref to old_rule in CSSRuleList::remove_a_css_rule
Using auto& when indexing an NNRPVector doesn't cause it to hold a strong reference and is instead just a plain old reference. If m_rules was the only storage holding a strong reference to old_rule, we would remove it in step 4 and subsequently UAF it in step 5.
This commit is contained in:
parent
d2f0a1d9b1
commit
c8fa0c3cd7
Notes:
sideshowbarker
2024-07-17 10:18:51 +09:00
Author: https://github.com/Lubrsi
Commit: c8fa0c3cd7
Pull-request: https://github.com/SerenityOS/serenity/pull/14258
1 changed files with 3 additions and 4 deletions
|
@ -72,17 +72,16 @@ DOM::ExceptionOr<void> CSSRuleList::remove_a_css_rule(u32 index)
|
|||
return DOM::IndexSizeError::create("CSS rule index out of bounds.");
|
||||
|
||||
// 3. Set old rule to the indexth item in list.
|
||||
auto& old_rule = m_rules[index];
|
||||
NonnullRefPtr<CSSRule> old_rule = m_rules[index];
|
||||
|
||||
// FIXME: 4. If old rule is an @namespace at-rule, and list contains anything other than @import at-rules, and @namespace at-rules, throw an InvalidStateError exception.
|
||||
(void)old_rule;
|
||||
|
||||
// 5. Remove rule old rule from list at the zero-indexed position index.
|
||||
m_rules.remove(index);
|
||||
|
||||
// 6. Set old rule’s parent CSS rule and parent CSS style sheet to null.
|
||||
old_rule.set_parent_rule(nullptr);
|
||||
old_rule.set_parent_style_sheet(nullptr);
|
||||
old_rule->set_parent_rule(nullptr);
|
||||
old_rule->set_parent_style_sheet(nullptr);
|
||||
|
||||
return {};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue