| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 86ac787 commit bc6f33d
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1118,6 +1118,8 @@ napi_status NAPI_CDECL napi_get_buffer_info(napi_env env, | |||
| 1118 | 1118 | CHECK_ARG(env, value); | |
| 1119 | 1119 | ||
| 1120 | 1120 | v8::Local<v8::Value> buffer = v8impl::V8LocalValueFromJsValue(value); | |
| 1121 | + RETURN_STATUS_IF_FALSE( | ||
| 1122 | + env, node::Buffer::HasInstance(buffer), napi_invalid_arg); | ||
| 1121 | 1123 | ||
| 1122 | 1124 | if (data != nullptr) { | |
| 1123 | 1125 | *data = node::Buffer::Data(buffer); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -25,4 +25,7 @@ const tick = require('util').promisify(require('../../common/tick')); | |||
| 25 | 25 | await tick(10); | |
| 26 | 26 | console.log('gc2'); | |
| 27 | 27 | assert.strictEqual(binding.getDeleterCallCount(), 2); | |
| 28 | + | ||
| 29 | + // To test this doesn't crash | ||
| 30 | + binding.invalidObjectAsBuffer({}); | ||
| 28 | 31 | })().then(common.mustCall()); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -107,6 +107,22 @@ static napi_value staticBuffer(napi_env env, napi_callback_info info) { | |||
| 107 | 107 | return theBuffer; | |
| 108 | 108 | } | |
| 109 | 109 | ||
| 110 | + static napi_value invalidObjectAsBuffer(napi_env env, napi_callback_info info) { | ||
| 111 | + size_t argc = 1; | ||
| 112 | + napi_value args[1]; | ||
| 113 | + NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); | ||
| 114 | + NODE_API_ASSERT(env, argc == 1, "Wrong number of arguments"); | ||
| 115 | + | ||
| 116 | + napi_value notTheBuffer = args[0]; | ||
| 117 | + napi_status status = napi_get_buffer_info(env, notTheBuffer, NULL, NULL); | ||
| 118 | + NODE_API_ASSERT(env, | ||
| 119 | + status == napi_invalid_arg, | ||
| 120 | + "napi_get_buffer_info: should fail with napi_invalid_arg " | ||
| 121 | + "when passed non buffer"); | ||
| 122 | + | ||
| 123 | + return notTheBuffer; | ||
| 124 | + } | ||
| 125 | + | ||
| 110 | 126 | static napi_value Init(napi_env env, napi_value exports) { | |
| 111 | 127 | napi_value theValue; | |
| 112 | 128 | ||
@@ -123,6 +139,7 @@ static napi_value Init(napi_env env, napi_value exports) { | |||
| 123 | 139 | DECLARE_NODE_API_PROPERTY("bufferHasInstance", bufferHasInstance), | |
| 124 | 140 | DECLARE_NODE_API_PROPERTY("bufferInfo", bufferInfo), | |
| 125 | 141 | DECLARE_NODE_API_PROPERTY("staticBuffer", staticBuffer), | |
| 142 | + DECLARE_NODE_API_PROPERTY("invalidObjectAsBuffer", invalidObjectAsBuffer), | ||
| 126 | 143 | }; | |
| 127 | 144 | ||
| 128 | 145 | NODE_API_CALL(env, napi_define_properties( | |
| Back | FazBrowse Home | New Git URL |
0 commit comments