diff options
author | drh <drh@noemail.net> | 2020-01-07 19:45:40 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2020-01-07 19:45:40 +0000 |
commit | 2b1c2aad9f45a21e04d3420152779386b6cf7d33 (patch) | |
tree | 1a1df932219cf9ffcc8aafd31aed443f0b661b47 /src | |
parent | 3f68142b820d10f3b0b4b9df65e789f4058eb67d (diff) | |
download | sqlite-2b1c2aad9f45a21e04d3420152779386b6cf7d33.tar.gz sqlite-2b1c2aad9f45a21e04d3420152779386b6cf7d33.zip |
Create the "trusted_schema" pragma. Add sqlite3_vtab_config() calls to set
the risk rank for many virtual tables.
FossilOrigin-Name: 4c21373c21c9b17b222ae65297a039a035e6ec6b505c00c33704e3c03f94f834
Diffstat (limited to 'src')
-rw-r--r-- | src/dbpage.c | 1 | ||||
-rw-r--r-- | src/dbstat.c | 1 | ||||
-rw-r--r-- | src/pragma.c | 2 | ||||
-rw-r--r-- | src/pragma.h | 9 |
4 files changed, 11 insertions, 2 deletions
diff --git a/src/dbpage.c b/src/dbpage.c index 27c962d14..c4f0b539e 100644 --- a/src/dbpage.c +++ b/src/dbpage.c @@ -73,6 +73,7 @@ static int dbpageConnect( DbpageTable *pTab = 0; int rc = SQLITE_OK; + sqlite3_vtab_config(db, SQLITE_VTAB_DIRECTONLY); rc = sqlite3_declare_vtab(db, "CREATE TABLE x(pgno INTEGER PRIMARY KEY, data BLOB, schema HIDDEN)"); if( rc==SQLITE_OK ){ diff --git a/src/dbstat.c b/src/dbstat.c index d0ce82e8c..2fea48ce8 100644 --- a/src/dbstat.c +++ b/src/dbstat.c @@ -167,6 +167,7 @@ static int statConnect( }else{ iDb = 0; } + sqlite3_vtab_config(db, SQLITE_VTAB_DIRECTONLY); rc = sqlite3_declare_vtab(db, zDbstatSchema); if( rc==SQLITE_OK ){ pTab = (StatTable *)sqlite3_malloc64(sizeof(StatTable)); diff --git a/src/pragma.c b/src/pragma.c index 2c127ed5a..f577fd2b5 100644 --- a/src/pragma.c +++ b/src/pragma.c @@ -1107,7 +1107,7 @@ void sqlite3Pragma( #endif if( sqlite3GetBoolean(zRight, 0) ){ - db->flags |= mask; + db->flags |= (mask & ~(SQLITE_TrustedSchema)); }else{ db->flags &= ~mask; if( mask==SQLITE_DeferFKs ) db->nDeferredImmCons = 0; diff --git a/src/pragma.h b/src/pragma.h index 449180ba1..3edf5c1c3 100644 --- a/src/pragma.h +++ b/src/pragma.h @@ -617,6 +617,13 @@ static const PragmaName aPragmaName[] = { /* ePragFlg: */ PragFlg_Result0, /* ColNames: */ 0, 0, /* iArg: */ 0 }, +#if !defined(SQLITE_OMIT_FLAG_PRAGMAS) + {/* zName: */ "trusted_schema", + /* ePragTyp: */ PragTyp_FLAG, + /* ePragFlg: */ PragFlg_Result0|PragFlg_NoColumns1, + /* ColNames: */ 0, 0, + /* iArg: */ SQLITE_TrustedSchema }, +#endif #if !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS) {/* zName: */ "user_version", /* ePragTyp: */ PragTyp_HEADER_VALUE, @@ -673,4 +680,4 @@ static const PragmaName aPragmaName[] = { /* iArg: */ SQLITE_WriteSchema|SQLITE_NoSchemaError }, #endif }; -/* Number of pragmas: 65 on by default, 81 total. */ +/* Number of pragmas: 66 on by default, 82 total. */ |