aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
authordrh <>2021-09-24 19:57:32 +0000
committerdrh <>2021-09-24 19:57:32 +0000
commit84d90319e585173a50ac157d9404aee7d6261fe3 (patch)
tree24f96e2217b1c2bdcfb386724576dfdfce661ae7 /src/resolve.c
parentb6dad520e58221bfa878c3b1703835dd7ff0bac8 (diff)
downloadsqlite-84d90319e585173a50ac157d9404aee7d6261fe3.tar.gz
sqlite-84d90319e585173a50ac157d9404aee7d6261fe3.zip
Dbsqlfuzz (a097eaad43c3c845b236126df92fb49b25449b0c) found a way to reach the
assert() that was added to sqlite3_declare_vtab() by [eb94f4a8174436b1]. This check-in fixes the problem. FossilOrigin-Name: 857d26a68cf439e9cba4f8a3b326c69366fc486a876b76835538709ee39b8713
Diffstat (limited to 'src/resolve.c')
-rw-r--r--src/resolve.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/resolve.c b/src/resolve.c
index 3c1311417..f5065e116 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -1119,9 +1119,11 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
testcase( pNC->ncFlags & NC_PartIdx );
testcase( pNC->ncFlags & NC_IdxExpr );
testcase( pNC->ncFlags & NC_GenCol );
- sqlite3ResolveNotValid(pParse, pNC, "subqueries",
- NC_IsCheck|NC_PartIdx|NC_IdxExpr|NC_GenCol, pExpr);
- sqlite3WalkSelect(pWalker, pExpr->x.pSelect);
+ if( pNC->ncFlags & NC_SelfRef ){
+ notValidImpl(pParse, pNC, "subqueries", pExpr);
+ }else{
+ sqlite3WalkSelect(pWalker, pExpr->x.pSelect);
+ }
assert( pNC->nRef>=nRef );
if( nRef!=pNC->nRef ){
ExprSetProperty(pExpr, EP_VarSelect);