Skip to content

Commit 1c3e090

Browse files
bnoordhuisaddaleax
authored andcommitted
src: make array arg length compile-time checkable
PR-URL: #14122 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 41f79fb commit 1c3e090

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

src/node_crypto.cc

+20-20
Original file line numberDiff line numberDiff line change
@@ -5314,7 +5314,7 @@ class PBKDF2Request : public AsyncWrap {
53145314
void Work();
53155315

53165316
static void After(uv_work_t* work_req, int status);
5317-
void After(Local<Value> argv[2]);
5317+
void After(Local<Value> (*argv)[2]);
53185318
void After();
53195319

53205320
private:
@@ -5352,14 +5352,14 @@ void PBKDF2Request::Work(uv_work_t* work_req) {
53525352
}
53535353

53545354

5355-
void PBKDF2Request::After(Local<Value> argv[2]) {
5355+
void PBKDF2Request::After(Local<Value> (*argv)[2]) {
53565356
if (error()) {
5357-
argv[0] = Undefined(env()->isolate());
5358-
argv[1] = Encode(env()->isolate(), key(), keylen(), BUFFER);
5357+
(*argv)[0] = Undefined(env()->isolate());
5358+
(*argv)[1] = Encode(env()->isolate(), key(), keylen(), BUFFER);
53595359
OPENSSL_cleanse(key(), keylen());
53605360
} else {
5361-
argv[0] = Exception::Error(env()->pbkdf2_error_string());
5362-
argv[1] = Undefined(env()->isolate());
5361+
(*argv)[0] = Exception::Error(env()->pbkdf2_error_string());
5362+
(*argv)[1] = Undefined(env()->isolate());
53635363
}
53645364
}
53655365

@@ -5368,7 +5368,7 @@ void PBKDF2Request::After() {
53685368
HandleScope handle_scope(env()->isolate());
53695369
Context::Scope context_scope(env()->context());
53705370
Local<Value> argv[2];
5371-
After(argv);
5371+
After(&argv);
53725372
MakeCallback(env()->ondone_string(), arraysize(argv), argv);
53735373
}
53745374

@@ -5485,7 +5485,7 @@ void PBKDF2(const FunctionCallbackInfo<Value>& args) {
54855485
env->PrintSyncTrace();
54865486
req->Work();
54875487
Local<Value> argv[2];
5488-
req->After(argv);
5488+
req->After(&argv);
54895489
delete req;
54905490

54915491
if (argv[0]->IsObject())
@@ -5595,21 +5595,21 @@ void RandomBytesWork(uv_work_t* work_req) {
55955595

55965596

55975597
// don't call this function without a valid HandleScope
5598-
void RandomBytesCheck(RandomBytesRequest* req, Local<Value> argv[2]) {
5598+
void RandomBytesCheck(RandomBytesRequest* req, Local<Value> (*argv)[2]) {
55995599
if (req->error()) {
56005600
char errmsg[256] = "Operation not supported";
56015601

56025602
if (req->error() != static_cast<unsigned long>(-1)) // NOLINT(runtime/int)
56035603
ERR_error_string_n(req->error(), errmsg, sizeof errmsg);
56045604

5605-
argv[0] = Exception::Error(OneByteString(req->env()->isolate(), errmsg));
5606-
argv[1] = Null(req->env()->isolate());
5605+
(*argv)[0] = Exception::Error(OneByteString(req->env()->isolate(), errmsg));
5606+
(*argv)[1] = Null(req->env()->isolate());
56075607
req->release();
56085608
} else {
56095609
char* data = nullptr;
56105610
size_t size;
56115611
req->return_memory(&data, &size);
5612-
argv[0] = Null(req->env()->isolate());
5612+
(*argv)[0] = Null(req->env()->isolate());
56135613
Local<Value> buffer =
56145614
req->object()->Get(req->env()->context(),
56155615
req->env()->buffer_string()).ToLocalChecked();
@@ -5618,9 +5618,9 @@ void RandomBytesCheck(RandomBytesRequest* req, Local<Value> argv[2]) {
56185618
CHECK_LE(req->size(), Buffer::Length(buffer));
56195619
char* buf = Buffer::Data(buffer);
56205620
memcpy(buf, data, req->size());
5621-
argv[1] = buffer;
5621+
(*argv)[1] = buffer;
56225622
} else {
5623-
argv[1] = Buffer::New(req->env(), data, size).ToLocalChecked();
5623+
(*argv)[1] = Buffer::New(req->env(), data, size).ToLocalChecked();
56245624
}
56255625
}
56265626
}
@@ -5634,22 +5634,22 @@ void RandomBytesAfter(uv_work_t* work_req, int status) {
56345634
HandleScope handle_scope(env->isolate());
56355635
Context::Scope context_scope(env->context());
56365636
Local<Value> argv[2];
5637-
RandomBytesCheck(req, argv);
5637+
RandomBytesCheck(req, &argv);
56385638
req->MakeCallback(env->ondone_string(), arraysize(argv), argv);
56395639
delete req;
56405640
}
56415641

56425642

56435643
void RandomBytesProcessSync(Environment* env,
56445644
RandomBytesRequest* req,
5645-
Local<Value> argv[2]) {
5645+
Local<Value> (*argv)[2]) {
56465646
env->PrintSyncTrace();
56475647
RandomBytesWork(req->work_req());
56485648
RandomBytesCheck(req, argv);
56495649
delete req;
56505650

5651-
if (!argv[0]->IsNull())
5652-
env->isolate()->ThrowException(argv[0]);
5651+
if (!(*argv)[0]->IsNull())
5652+
env->isolate()->ThrowException((*argv)[0]);
56535653
}
56545654

56555655

@@ -5686,7 +5686,7 @@ void RandomBytes(const FunctionCallbackInfo<Value>& args) {
56865686
args.GetReturnValue().Set(obj);
56875687
} else {
56885688
Local<Value> argv[2];
5689-
RandomBytesProcessSync(env, req, argv);
5689+
RandomBytesProcessSync(env, req, &argv);
56905690
if (argv[0]->IsNull())
56915691
args.GetReturnValue().Set(argv[1]);
56925692
}
@@ -5733,7 +5733,7 @@ void RandomBytesBuffer(const FunctionCallbackInfo<Value>& args) {
57335733
args.GetReturnValue().Set(obj);
57345734
} else {
57355735
Local<Value> argv[2];
5736-
RandomBytesProcessSync(env, req, argv);
5736+
RandomBytesProcessSync(env, req, &argv);
57375737
if (argv[0]->IsNull())
57385738
args.GetReturnValue().Set(argv[1]);
57395739
}

0 commit comments

Comments
 (0)