diff options
author | Gabriel Schulhof <gabrielschulhof@gmail.com> | 2021-06-04 09:05:07 +0300 |
---|---|---|
committer | Gabriel Schulhof <gabrielschulhof@gmail.com> | 2021-06-11 19:01:22 +0300 |
commit | d615aeb7583b15bb5a8d1ec666ea29b8c7377455 (patch) | |
tree | 5df490316e687b4c1eda8608708f9ef3c6632005 /src | |
parent | fa1a842a08aa0be1cbc7b6a0e5517340c6768986 (diff) |
node-api: avoid crashing on passed-in null string
When `napi_create_string_*` receives a null pointer as its second
argument, it must null-check it before passing it into V8, otherwise a
crash will occur.
Signed-off-by: Gabriel Schulhof <gabrielschulhof@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/38923
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Michael Dawson <midawson@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/js_native_api_v8.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc index d972ee43c88..33587bc2a79 100644 --- a/src/js_native_api_v8.cc +++ b/src/js_native_api_v8.cc @@ -1485,6 +1485,8 @@ napi_status napi_create_string_latin1(napi_env env, size_t length, napi_value* result) { CHECK_ENV(env); + if (length > 0) + CHECK_ARG(env, str); CHECK_ARG(env, result); RETURN_STATUS_IF_FALSE(env, (length == NAPI_AUTO_LENGTH) || length <= INT_MAX, @@ -1507,6 +1509,8 @@ napi_status napi_create_string_utf8(napi_env env, size_t length, napi_value* result) { CHECK_ENV(env); + if (length > 0) + CHECK_ARG(env, str); CHECK_ARG(env, result); RETURN_STATUS_IF_FALSE(env, (length == NAPI_AUTO_LENGTH) || length <= INT_MAX, @@ -1528,6 +1532,8 @@ napi_status napi_create_string_utf16(napi_env env, size_t length, napi_value* result) { CHECK_ENV(env); + if (length > 0) + CHECK_ARG(env, str); CHECK_ARG(env, result); RETURN_STATUS_IF_FALSE(env, (length == NAPI_AUTO_LENGTH) || length <= INT_MAX, |