diff --git a/src/node_sqlite.cc b/src/node_sqlite.cc index 91b80b4fb44c26..43888f083340c0 100644 --- a/src/node_sqlite.cc +++ b/src/node_sqlite.cc @@ -105,7 +105,11 @@ using v8::Value; case SQLITE_TEXT: { \ const char* v = \ reinterpret_cast(sqlite3_##from##_text(__VA_ARGS__)); \ - (result) = String::NewFromUtf8((isolate), v).As(); \ + if (v == nullptr) { \ + THROW_ERR_MEMORY_ALLOCATION_FAILED(isolate); \ + } else { \ + (result) = String::NewFromUtf8((isolate), v).As(); \ + } \ break; \ } \ case SQLITE_NULL: { \ @@ -119,7 +123,9 @@ using v8::Value; sqlite3_##from##_blob(__VA_ARGS__)); \ auto store = ArrayBuffer::NewBackingStore( \ (isolate), size, BackingStoreInitializationMode::kUninitialized); \ - memcpy(store->Data(), data, size); \ + if (data) { \ + memcpy(store->Data(), data, size); \ + } \ auto ab = ArrayBuffer::New((isolate), std::move(store)); \ (result) = Uint8Array::New(ab, 0, size); \ break; \ diff --git a/src/node_webstorage.cc b/src/node_webstorage.cc index 2a7eb37ed03205..472a457f9407a4 100644 --- a/src/node_webstorage.cc +++ b/src/node_webstorage.cc @@ -183,6 +183,7 @@ Maybe Storage::Open() { get_schema_version_sql.size(), &s, nullptr); + CHECK_ERROR_OR_THROW(env(), r, SQLITE_OK, Nothing()); r = sqlite3_exec(db, init_sql_v0.data(), nullptr, nullptr, nullptr); CHECK_ERROR_OR_THROW(env(), r, SQLITE_OK, Nothing()); auto stmt = stmt_unique_ptr(s);