mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 07:30:19 +00:00
LibWeb: Bail parsing transform-origin if the parsed value is null
Passing a value of a type different than number or length-percentage to transform-origin returned a null pointer, and we didn't take care of that path before. This patch fixes a crash caused by an incorrect CSS declaration, such as `transform-origin: "center"`. Fixes #21609
This commit is contained in:
parent
d22aa851cf
commit
bf16ddfbb0
Notes:
sideshowbarker
2024-07-16 23:34:49 +09:00
Author: https://github.com/krkk Commit: https://github.com/SerenityOS/serenity/commit/bf16ddfbb0 Pull-request: https://github.com/SerenityOS/serenity/pull/21668 Issue: https://github.com/SerenityOS/serenity/issues/21609
3 changed files with 32 additions and 0 deletions
|
@ -0,0 +1,7 @@
|
|||
center => 50% 50%
|
||||
10px => 10px 50%
|
||||
25% => 25% 50%
|
||||
left 20% => 0% 20%
|
||||
20px bottom => 20px 100%
|
||||
top right => 100% 0%
|
||||
"center" => (invalid)
|
|
@ -0,0 +1,23 @@
|
|||
<script src="../include.js"></script>
|
||||
<script>
|
||||
test(() => {
|
||||
function serialize(input) {
|
||||
const e = document.createElement("div");
|
||||
e.style.transformOrigin = input;
|
||||
const serialized = e.style.transformOrigin;
|
||||
println(input + " => " + (serialized === '' ? '(invalid)' : serialized));
|
||||
}
|
||||
|
||||
for (transformOrigin of [
|
||||
'center',
|
||||
'10px',
|
||||
'25%',
|
||||
'left 20%',
|
||||
'20px bottom',
|
||||
'top right',
|
||||
'"center"',
|
||||
]) {
|
||||
serialize(transformOrigin);
|
||||
}
|
||||
});
|
||||
</script>
|
|
@ -5008,6 +5008,8 @@ RefPtr<StyleValue> Parser::parse_transform_origin_value(Vector<ComponentValue> c
|
|||
};
|
||||
|
||||
auto to_axis_offset = [](RefPtr<StyleValue> value) -> Optional<AxisOffset> {
|
||||
if (!value)
|
||||
return OptionalNone {};
|
||||
if (value->is_percentage())
|
||||
return AxisOffset { Axis::None, value->as_percentage() };
|
||||
if (value->is_length())
|
||||
|
|
Loading…
Reference in a new issue