From c00872c0c0ad09fb0e45e7a10c6ffeff6a7bddef Mon Sep 17 00:00:00 2001 From: Andrew Mitchell <32021055+mitch292@users.noreply.github.com> Date: Sun, 21 Mar 2021 08:52:28 -0400 Subject: [PATCH] fix(core): don't panic on invalid arguments for Deno.core.print (#9834) --- core/bindings.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/core/bindings.rs b/core/bindings.rs index 7fb8aac70b23da..23cd86a179a382 100644 --- a/core/bindings.rs +++ b/core/bindings.rs @@ -315,16 +315,19 @@ fn print( _rv: v8::ReturnValue, ) { let arg_len = args.length(); - assert!((0..=2).contains(&arg_len)); + if !(0..=2).contains(&arg_len) { + return throw_type_error(scope, "Expected a maximum of 2 arguments."); + } let obj = args.get(0); let is_err_arg = args.get(1); let mut is_err = false; if arg_len == 2 { - let int_val = is_err_arg - .integer_value(scope) - .expect("Unable to convert to integer"); + let int_val = match is_err_arg.integer_value(scope) { + Some(v) => v, + None => return throw_type_error(scope, "Invalid arugment. Argument 2 should indicate wheter or not to print to stderr."), + }; is_err = int_val != 0; }; let tc_scope = &mut v8::TryCatch::new(scope);