Skip to content

Commit 1967aec

Browse files
louwersaduh95
authored andcommitted
sqlite: enable defensive mode by default
PR-URL: #61266 Reviewed-By: René <contact.9a5d6388@renegade334.me.uk> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com>
1 parent 655d2bc commit 1967aec

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

doc/api/sqlite.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@ exposed by this class execute synchronously.
102102
<!-- YAML
103103
added: v22.5.0
104104
changes:
105+
- version: REPLACEME
106+
pr-url: https://github.com/nodejs/node/pull/61266
107+
description: Enable `defensive` by default.
105108
- version:
106109
- v24.12.0
107110
pr-url: https://github.com/nodejs/node/pull/60217
@@ -149,7 +152,7 @@ changes:
149152
* `defensive` {boolean} If `true`, enables the defensive flag. When the defensive flag is enabled,
150153
language features that allow ordinary SQL to deliberately corrupt the database file are disabled.
151154
The defensive flag can also be set using `enableDefensive()`.
152-
**Default:** `false`.
155+
**Default:** `true`.
153156

154157
Constructs a new `DatabaseSync` instance.
155158

src/node_sqlite.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class DatabaseOpenConfiguration {
7979
bool return_arrays_ = false;
8080
bool allow_bare_named_params_ = true;
8181
bool allow_unknown_named_params_ = false;
82-
bool defensive_ = false;
82+
bool defensive_ = true;
8383
};
8484

8585
class DatabaseSync;

test/parallel/test-sqlite-config.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ function checkDefensiveMode(db) {
2020
}
2121
}
2222

23-
test('by default, defensive mode is off', (t) => {
23+
test('by default, defensive mode is on', (t) => {
2424
const db = new DatabaseSync(':memory:');
25-
t.assert.strictEqual(checkDefensiveMode(db), false);
25+
t.assert.strictEqual(checkDefensiveMode(db), true);
2626
});
2727

2828
test('when passing { defensive: true } as config, defensive mode is on', (t) => {
@@ -32,13 +32,20 @@ test('when passing { defensive: true } as config, defensive mode is on', (t) =>
3232
t.assert.strictEqual(checkDefensiveMode(db), true);
3333
});
3434

35+
test('when passing { defensive: false } as config, defensive mode is off', (t) => {
36+
const db = new DatabaseSync(':memory:', {
37+
defensive: false
38+
});
39+
t.assert.strictEqual(checkDefensiveMode(db), false);
40+
});
41+
3542
test('defensive mode on after calling db.enableDefensive(true)', (t) => {
3643
const db = new DatabaseSync(':memory:');
3744
db.enableDefensive(true);
3845
t.assert.strictEqual(checkDefensiveMode(db), true);
3946
});
4047

41-
test('defensive mode should be off after calling db.enableDefensive(false)', (t) => {
48+
test('defensive mode off after calling db.enableDefensive(false)', (t) => {
4249
const db = new DatabaseSync(':memory:', {
4350
defensive: true
4451
});

0 commit comments

Comments
 (0)