mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
LibWeb: Don't crash when parsing large floating point number values
Previously, attempting to parse a floating point number with an integer part larger than `(2 ^ 31) - 1` would cause the browser to crash. We now avoid this by converting the integer part of the number to a `double` rather than an `i32`.
This commit is contained in:
parent
cf7a1f6a52
commit
21a32e4b6d
Notes:
github-actions[bot]
2024-10-31 07:06:15 +00:00
Author: https://github.com/tcl3 Commit: https://github.com/LadybirdBrowser/ladybird/commit/21a32e4b6dc Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2066
3 changed files with 11 additions and 1 deletions
|
@ -0,0 +1 @@
|
|||
progressElement.max: 1e+21
|
|
@ -0,0 +1,9 @@
|
|||
<!DOCTYPE html>
|
||||
<progress max="1000000000000000000000"></progress>
|
||||
<script src="../include.js"></script>
|
||||
<script>
|
||||
test(() => {
|
||||
const progressElement = document.querySelector("progress");
|
||||
println(`progressElement.max: ${progressElement.max}`);
|
||||
});
|
||||
</script>
|
|
@ -150,7 +150,7 @@ Optional<double> parse_floating_point_number(StringView string)
|
|||
lexer.consume_while(is_ascii_digit);
|
||||
size_t end_index = lexer.tell();
|
||||
auto digits = lexer.input().substring_view(start_index, end_index - start_index);
|
||||
auto optional_value = AK::StringUtils::convert_to_int<i32>(digits);
|
||||
auto optional_value = AK::StringUtils::convert_to_floating_point<double>(digits, TrimWhitespace::No);
|
||||
value *= optional_value.value();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue