@@ -30,6 +30,8 @@ static bool lossless = false;
3030
3131void GetLibrary (const FunctionCallbackInfo<Value>& args) {
3232 Environment* env = Environment::GetCurrent (args);
33+ THROW_IF_INSUFFICIENT_PERMISSIONS (
34+ env, permission::PermissionScope::kFfi , " " );
3335
3436 bool isNull = true ;
3537 std::string fname = " " ;
@@ -59,6 +61,9 @@ void GetLibrary(const FunctionCallbackInfo<Value>& args) {
5961
6062void GetSymbol (const FunctionCallbackInfo<Value>& args) {
6163 Environment* env = Environment::GetCurrent (args);
64+ THROW_IF_INSUFFICIENT_PERMISSIONS (
65+ env, permission::PermissionScope::kFfi , " " );
66+
6267 CHECK (args[0 ]->IsBigInt ());
6368 binding::DLib * lib = (binding::DLib *)args[0 ].As <BigInt>()
6469 ->Uint64Value (&lossless);
@@ -69,6 +74,10 @@ void GetSymbol(const FunctionCallbackInfo<Value>& args) {
6974}
7075
7176void GetBufferPointer (const FunctionCallbackInfo<Value>& args) {
77+ Environment* env = Environment::GetCurrent (args);
78+ THROW_IF_INSUFFICIENT_PERMISSIONS (
79+ env, permission::PermissionScope::kFfi , " " );
80+
7281 CHECK (args[0 ]->IsArrayBuffer ());
7382 void * data = args[0 ].As <ArrayBuffer>()->Data ();
7483
@@ -116,12 +125,16 @@ FfiSignature::~FfiSignature() {
116125}
117126
118127void FfiSignature::New (const FunctionCallbackInfo<Value>& args) {
128+ Isolate * isolate = args.GetIsolate ();
129+ Environment * env = Environment::GetCurrent (isolate);
130+
131+ THROW_IF_INSUFFICIENT_PERMISSIONS (
132+ env, permission::PermissionScope::kFfi , " " );
133+
119134 CHECK (args.IsConstructCall ());
120135 CHECK (args[0 ]->IsBigInt ());
121136 CHECK (args[1 ]->IsBigInt ());
122137 CHECK (args[2 ]->IsArray ());
123- Isolate * isolate = args.GetIsolate ();
124- Environment * env = Environment::GetCurrent (isolate);
125138
126139 FfiSignature* sig = new FfiSignature (
127140 env,
@@ -137,6 +150,11 @@ void FfiSignature::New(const FunctionCallbackInfo<Value>& args) {
137150}
138151
139152void MakeCall (const FunctionCallbackInfo<Value> &args) {
153+ Isolate * isolate = args.GetIsolate ();
154+ Environment * env = Environment::GetCurrent (isolate);
155+ THROW_IF_INSUFFICIENT_PERMISSIONS (
156+ env, permission::PermissionScope::kFfi , " " );
157+
140158 char * callBuffer = reinterpret_cast <char *>(
141159 Realm::GetBindingData<FfiBindingData>(args)->callBuffer );
142160 FfiSignature * sig = *reinterpret_cast <FfiSignature **>(callBuffer);
0 commit comments