From b4939797d31f4ee32036a73f1bf85c2778113f61 Mon Sep 17 00:00:00 2001 From: Bart Louwers Date: Sun, 12 Oct 2025 00:13:04 +0200 Subject: [PATCH 1/6] sqlite: allow setting defensive flag --- doc/api/sqlite.md | 18 +++++++++++ src/env_properties.h | 1 + src/node_sqlite.cc | 45 +++++++++++++++++++++++++++ src/node_sqlite.h | 6 ++++ test/parallel/test-sqlite-config.js | 47 +++++++++++++++++++++++++++++ 5 files changed, 117 insertions(+) create mode 100644 test/parallel/test-sqlite-config.js diff --git a/doc/api/sqlite.md b/doc/api/sqlite.md index f5926d65fc686a..189a52446f243c 100644 --- a/doc/api/sqlite.md +++ b/doc/api/sqlite.md @@ -140,6 +140,10 @@ changes: character (e.g., `foo` instead of `:foo`). **Default:** `true`. * `allowUnknownNamedParameters` {boolean} If `true`, unknown named parameters are ignored when binding. If `false`, an exception is thrown for unknown named parameters. **Default:** `false`. + * `defensive` {boolean} If `true`, enables the defensive flag. When the defensive flag is enabled, + language features that allow ordinary SQL to deliberately corrupt the database file are disabled. + The defensive flag can also be set using `enableDefensive()`. + **Default:** `false`. Constructs a new `DatabaseSync` instance. @@ -261,6 +265,19 @@ Enables or disables the `loadExtension` SQL function, and the `loadExtension()` method. When `allowExtension` is `false` when constructing, you cannot enable loading extensions for security reasons. +### `database.enableDefensive(active)` + + + +* `active` {boolean} Whether to set the defensive flag. + +Enables or disables the defensive flag. When the defensive flag is active, +language features that allow ordinary SQL to deliberately corrupt the database file are disabled. +See [`SQLITE_DBCONFIG_DEFENSIVE`][] in the SQLite documentation for details. + ### `database.location([dbName])` * `path` {string | Buffer | URL} The path of the database. A SQLite database can be From af876694493e09708db41d9bd3b806bbe610fd4e Mon Sep 17 00:00:00 2001 From: Bart Louwers Date: Sun, 12 Oct 2025 22:19:10 +0200 Subject: [PATCH 6/6] doc: fix order changes list --- doc/api/sqlite.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/api/sqlite.md b/doc/api/sqlite.md index 26a99fec143ced..b8eafe8a64ca85 100644 --- a/doc/api/sqlite.md +++ b/doc/api/sqlite.md @@ -98,15 +98,15 @@ exposed by this class execute synchronously. * `path` {string | Buffer | URL} The path of the database. A SQLite database can be