aboutsummaryrefslogtreecommitdiff
path: root/src/select.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2020-01-07 18:10:56 +0000
committerdrh <drh@noemail.net>2020-01-07 18:10:56 +0000
commit3f68142b820d10f3b0b4b9df65e789f4058eb67d (patch)
tree8bbf4ce9677a5cfdd012dd6bb093bbbfc86eca53 /src/select.c
parentb77da374ab6dfeaac5def640da91f219da7fa5c0 (diff)
downloadsqlite-3f68142b820d10f3b0b4b9df65e789f4058eb67d.tar.gz
sqlite-3f68142b820d10f3b0b4b9df65e789f4058eb67d.zip
Enforce SQLITE_VTABRISK restrictions.
FossilOrigin-Name: 3d87ff312e617a26846d482b423163cad9c222513f33e128f0fe348dda27c7c9
Diffstat (limited to 'src/select.c')
-rw-r--r--src/select.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/select.c b/src/select.c
index d45735b0e..d6cd7c25e 100644
--- a/src/select.c
+++ b/src/select.c
@@ -4964,7 +4964,15 @@ static int selectExpander(Walker *pWalker, Select *p){
assert( pFrom->pSelect==0 );
if( pTab->pSelect && (db->flags & SQLITE_EnableView)==0 ){
sqlite3ErrorMsg(pParse, "access to view \"%s\" prohibited",
- pTab->zName);
+ pTab->zName);
+ }
+ if( IsVirtual(pTab)
+ && pFrom->fg.fromDDL
+ && ALWAYS(pTab->pVTable!=0)
+ && pTab->pVTable->eVtabRisk > ((db->flags & SQLITE_TrustedSchema)!=0)
+ ){
+ sqlite3ErrorMsg(pParse, "cannot access \"%s\" from within a trigger"
+ " or view", pTab->zName);
}
pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0);
nCol = pTab->nCol;