diff options
author | drh <drh@noemail.net> | 2020-01-07 18:10:56 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2020-01-07 18:10:56 +0000 |
commit | 3f68142b820d10f3b0b4b9df65e789f4058eb67d (patch) | |
tree | 8bbf4ce9677a5cfdd012dd6bb093bbbfc86eca53 /src/select.c | |
parent | b77da374ab6dfeaac5def640da91f219da7fa5c0 (diff) | |
download | sqlite-3f68142b820d10f3b0b4b9df65e789f4058eb67d.tar.gz sqlite-3f68142b820d10f3b0b4b9df65e789f4058eb67d.zip |
Enforce SQLITE_VTABRISK restrictions.
FossilOrigin-Name: 3d87ff312e617a26846d482b423163cad9c222513f33e128f0fe348dda27c7c9
Diffstat (limited to 'src/select.c')
-rw-r--r-- | src/select.c | 10 |
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; |