diff options
author | drh <> | 2021-09-24 19:57:32 +0000 |
---|---|---|
committer | drh <> | 2021-09-24 19:57:32 +0000 |
commit | 84d90319e585173a50ac157d9404aee7d6261fe3 (patch) | |
tree | 24f96e2217b1c2bdcfb386724576dfdfce661ae7 /src/resolve.c | |
parent | b6dad520e58221bfa878c3b1703835dd7ff0bac8 (diff) | |
download | sqlite-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.c | 8 |
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); |