From 71bc080f6300ac51ff6d08adf0539dd2c3129f06 Mon Sep 17 00:00:00 2001 From: George Roman <30772943+georgeroman@users.noreply.github.com> Date: Sat, 17 Oct 2020 13:00:21 +0300 Subject: [PATCH] Fix `BigInt.prototype.toString()` radix checks (#885) --- boa/src/builtins/bigint/mod.rs | 2 +- boa/src/builtins/bigint/tests.rs | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/boa/src/builtins/bigint/mod.rs b/boa/src/builtins/bigint/mod.rs index 82d2c62903..2ad5f61014 100644 --- a/boa/src/builtins/bigint/mod.rs +++ b/boa/src/builtins/bigint/mod.rs @@ -140,7 +140,7 @@ impl BigInt { } else { 10 }; - if radix < 2 && radix > 36 { + if radix < 2 || radix > 36 { return ctx .throw_range_error("radix must be an integer at least 2 and no greater than 36"); } diff --git a/boa/src/builtins/bigint/tests.rs b/boa/src/builtins/bigint/tests.rs index 0fdf2e52df..210275a914 100644 --- a/boa/src/builtins/bigint/tests.rs +++ b/boa/src/builtins/bigint/tests.rs @@ -212,6 +212,15 @@ fn to_string() { assert_eq!(forward(&mut engine, "1000n.toString(36)"), "\"rs\""); } +#[test] +fn to_string_invalid_radix() { + let mut engine = Context::new(); + + assert_throws(&mut engine, "10n.toString(null)", "RangeError"); + assert_throws(&mut engine, "10n.toString(-1)", "RangeError"); + assert_throws(&mut engine, "10n.toString(37)", "RangeError"); +} + #[test] fn as_int_n() { let mut engine = Context::new();