mirror of
https://github.com/nodejs/node.git
synced 2026-11-09 15:11:11 -05:00
sqlite: fix undefined behaviour in Session::Changeset()
If `nChangeset == 0`, the pointer `pChangeset` may be nullptr. Passing a nullptr to `memcpy()` is undefined behaviour. This can be triggered by running the test suite under UBSAN. Signed-off-by: ndossche <nora.dossche@ugent.be> PR-URL: https://github.com/nodejs/node/pull/63637 Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
This commit is contained in:
1 parent
51c0d94072
commit
c18fd9060b
1 file changed
+3
-1
+3
-1
@@ -3936,7 +3936,9 @@ void Session::Changeset(const FunctionCallbackInfo<Value>& args) {
|
||||
auto freeChangeset = OnScopeLeave([&] { sqlite3_free(pChangeset); });
|
||||
|
||||
Local<ArrayBuffer> buffer = ArrayBuffer::New(env->isolate(), nChangeset);
|
||||
std::memcpy(buffer->GetBackingStore()->Data(), pChangeset, nChangeset);
|
||||
if (nChangeset > 0) {
|
||||
std::memcpy(buffer->GetBackingStore()->Data(), pChangeset, nChangeset);
|
||||
}
|
||||
Local<Uint8Array> uint8Array = Uint8Array::New(buffer, 0, nChangeset);
|
||||
|
||||
args.GetReturnValue().Set(uint8Array);
|
||||
|
||||
Reference in new issue
Block a user