@@ -426,8 +426,13 @@ Http2Priority::Http2Priority(Environment* env,
426426                             Local<Value> weight,
427427                             Local<Value> exclusive) {
428428  Local<Context> context = env->context ();
429-   int32_t  parent_ = parent->Int32Value (context).ToChecked ();
430-   int32_t  weight_ = weight->Int32Value (context).ToChecked ();
429+   int32_t  parent_;
430+   int32_t  weight_;
431+   if  (!parent->Int32Value (context).To (&parent_) ||
432+       !weight->Int32Value (context).To (&weight_)) {
433+     nghttp2_priority_spec_init (this , 0 , 0 , 0 );
434+     return ;
435+   }
431436  bool  exclusive_ = exclusive->IsTrue ();
432437  Debug (env, DebugCategory::HTTP2STREAM,
433438        " Http2Priority: parent: %d, weight: %d, exclusive: %s\n "  ,
@@ -2719,11 +2724,12 @@ void Http2Stream::DecrementAvailableOutboundLength(size_t amount) {
27192724//  back to JS land
27202725void  HttpErrorString (const  FunctionCallbackInfo<Value>& args) {
27212726  Environment* env = Environment::GetCurrent (args);
2722-   uint32_t  val = args[0 ]->Uint32Value (env->context ()).ToChecked ();
2723-   args.GetReturnValue ().Set (
2724-       OneByteString (
2725-           env->isolate (),
2726-           reinterpret_cast <const  uint8_t *>(nghttp2_strerror (val))));
2727+   uint32_t  val;
2728+   if  (args[0 ]->Uint32Value (env->context ()).To (&val)) {
2729+     args.GetReturnValue ().Set (
2730+         OneByteString (env->isolate (),
2731+                       reinterpret_cast <const  uint8_t *>(nghttp2_strerror (val))));
2732+   }
27272733}
27282734
27292735
@@ -2748,7 +2754,10 @@ void Http2Session::SetNextStreamID(const FunctionCallbackInfo<Value>& args) {
27482754  Environment* env = Environment::GetCurrent (args);
27492755  Http2Session* session;
27502756  ASSIGN_OR_RETURN_UNWRAP (&session, args.This ());
2751-   int32_t  id = args[0 ]->Int32Value (env->context ()).ToChecked ();
2757+   int32_t  id;
2758+   if  (!args[0 ]->Int32Value (env->context ()).To (&id)) {
2759+     return ;
2760+   }
27522761  if  (nghttp2_session_set_next_stream_id (session->session (), id) < 0 ) {
27532762    Debug (session, " failed to set next stream id to %d"  , id);
27542763    return  args.GetReturnValue ().Set (false );
@@ -2766,7 +2775,10 @@ void Http2Session::SetLocalWindowSize(
27662775  Http2Session* session;
27672776  ASSIGN_OR_RETURN_UNWRAP (&session, args.This ());
27682777
2769-   int32_t  window_size = args[0 ]->Int32Value (env->context ()).ToChecked ();
2778+   int32_t  window_size;
2779+   if  (!args[0 ]->Int32Value (env->context ()).To (&window_size)) {
2780+     return ;
2781+   }
27702782
27712783  int  result = nghttp2_session_set_local_window_size (
27722784      session->session (), NGHTTP2_FLAG_NONE, 0 , window_size);
@@ -2826,8 +2838,11 @@ void Http2Session::New(const FunctionCallbackInfo<Value>& args) {
28262838  Http2State* state = realm->GetBindingData <Http2State>();
28272839
28282840  CHECK (args.IsConstructCall ());
2829-   SessionType type = static_cast <SessionType>(
2830-       args[0 ]->Int32Value (realm->context ()).ToChecked ());
2841+   int32_t  val;
2842+   if  (!args[0 ]->Int32Value (realm->context ()).To (&val)) {
2843+     return ;
2844+   }
2845+   SessionType type = static_cast <SessionType>(val);
28312846  Http2Session* session = new  Http2Session (state, args.This (), type);
28322847  Debug (session, " session created"  );
28332848}
@@ -2849,7 +2864,10 @@ void Http2Session::Destroy(const FunctionCallbackInfo<Value>& args) {
28492864  Environment* env = Environment::GetCurrent (args);
28502865  Local<Context> context = env->context ();
28512866
2852-   uint32_t  code = args[0 ]->Uint32Value (context).ToChecked ();
2867+   uint32_t  code;
2868+   if  (!args[0 ]->Uint32Value (context).To (&code)) {
2869+     return ;
2870+   }
28532871  session->Close (code, args[1 ]->IsTrue ());
28542872}
28552873
@@ -2861,7 +2879,10 @@ void Http2Session::Request(const FunctionCallbackInfo<Value>& args) {
28612879  Environment* env = session->env ();
28622880
28632881  Local<Array> headers = args[0 ].As <Array>();
2864-   int32_t  options = args[1 ]->Int32Value (env->context ()).ToChecked ();
2882+   int32_t  options;
2883+   if  (!args[1 ]->Int32Value (env->context ()).To (&options)) {
2884+     return ;
2885+   }
28652886
28662887  Debug (session, " request submitted"  );
28672888
@@ -2910,8 +2931,14 @@ void Http2Session::Goaway(const FunctionCallbackInfo<Value>& args) {
29102931  Http2Session* session;
29112932  ASSIGN_OR_RETURN_UNWRAP (&session, args.This ());
29122933
2913-   uint32_t  code = args[0 ]->Uint32Value (context).ToChecked ();
2914-   int32_t  lastStreamID = args[1 ]->Int32Value (context).ToChecked ();
2934+   uint32_t  code;
2935+   if  (!args[0 ]->Uint32Value (context).To (&code)) {
2936+     return ;
2937+   }
2938+   int32_t  lastStreamID;
2939+   if  (!args[1 ]->Int32Value (context).To (&lastStreamID)) {
2940+     return ;
2941+   }
29152942  ArrayBufferViewContents<uint8_t > opaque_data;
29162943
29172944  if  (args[2 ]->IsArrayBufferView ()) {
@@ -2947,7 +2974,10 @@ void Http2Stream::RstStream(const FunctionCallbackInfo<Value>& args) {
29472974  Local<Context> context = env->context ();
29482975  Http2Stream* stream;
29492976  ASSIGN_OR_RETURN_UNWRAP (&stream, args.This ());
2950-   uint32_t  code = args[0 ]->Uint32Value (context).ToChecked ();
2977+   uint32_t  code;
2978+   if  (!args[0 ]->Uint32Value (context).To (&code)) {
2979+     return ;
2980+   }
29512981  Debug (stream, " sending rst_stream with code %d"  , code);
29522982  stream->SubmitRstStream (code);
29532983}
@@ -2960,7 +2990,10 @@ void Http2Stream::Respond(const FunctionCallbackInfo<Value>& args) {
29602990  ASSIGN_OR_RETURN_UNWRAP (&stream, args.This ());
29612991
29622992  Local<Array> headers = args[0 ].As <Array>();
2963-   int32_t  options = args[1 ]->Int32Value (env->context ()).ToChecked ();
2993+   int32_t  options;
2994+   if  (!args[1 ]->Int32Value (env->context ()).To (&options)) {
2995+     return ;
2996+   }
29642997
29652998  args.GetReturnValue ().Set (
29662999      stream->SubmitResponse (
@@ -3015,7 +3048,10 @@ void Http2Stream::PushPromise(const FunctionCallbackInfo<Value>& args) {
30153048  ASSIGN_OR_RETURN_UNWRAP (&parent, args.This ());
30163049
30173050  Local<Array> headers = args[0 ].As <Array>();
3018-   int32_t  options = args[1 ]->Int32Value (env->context ()).ToChecked ();
3051+   int32_t  options;
3052+   if  (!args[1 ]->Int32Value (env->context ()).To (&options)) {
3053+     return ;
3054+   }
30193055
30203056  Debug (parent, " creating push promise"  );
30213057
@@ -3110,7 +3146,10 @@ void Http2Session::AltSvc(const FunctionCallbackInfo<Value>& args) {
31103146  Http2Session* session;
31113147  ASSIGN_OR_RETURN_UNWRAP (&session, args.This ());
31123148
3113-   int32_t  id = args[0 ]->Int32Value (env->context ()).ToChecked ();
3149+   int32_t  id;
3150+   if  (!args[0 ]->Int32Value (env->context ()).To (&id)) {
3151+     return ;
3152+   }
31143153
31153154  //  origin and value are both required to be ASCII, handle them as such.
31163155  Local<String> origin_str = args[1 ]->ToString (env->context ()).ToLocalChecked ();
@@ -3142,9 +3181,12 @@ void Http2Session::Origin(const FunctionCallbackInfo<Value>& args) {
31423181  ASSIGN_OR_RETURN_UNWRAP (&session, args.This ());
31433182
31443183  Local<String> origin_string = args[0 ].As <String>();
3145-   size_t  count = args[1 ]->Int32Value (context).ToChecked ();
3184+   int32_t  count;
3185+   if  (!args[1 ]->Int32Value (context).To (&count)) {
3186+     return ;
3187+   }
31463188
3147-   session->Origin (Origins (env, origin_string, count));
3189+   session->Origin (Origins (env, origin_string, static_cast < size_t >( count) ));
31483190}
31493191
31503192//  Submits a PING frame to be sent to the connected peer.
0 commit comments