diff options
author | drh <drh@noemail.net> | 2018-04-28 04:16:43 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2018-04-28 04:16:43 +0000 |
commit | 1efa8023a1741fb79152f360e5c10392ccff8f6b (patch) | |
tree | 3662abcedac55949f46bf7638977f7b6a0a606f5 /src/expr.c | |
parent | 6bfd973ce67980e5d09c8adfc465767297193573 (diff) | |
download | sqlite-1efa8023a1741fb79152f360e5c10392ccff8f6b.tar.gz sqlite-1efa8023a1741fb79152f360e5c10392ccff8f6b.zip |
Prevent deep recursions on nested COLLATE operators.
FossilOrigin-Name: 6e098ee415f1a530e17a942c9ba51d67c25a3ebff6b97377b7858d0b10bcec92
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/expr.c b/src/expr.c index 03fad6cc5..2d4a14c8d 100644 --- a/src/expr.c +++ b/src/expr.c @@ -3551,6 +3551,7 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){ return 0; } +expr_code_doover: if( pExpr==0 ){ op = TK_NULL; }else{ @@ -4011,7 +4012,8 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){ case TK_SPAN: case TK_COLLATE: case TK_UPLUS: { - return sqlite3ExprCodeTarget(pParse, pExpr->pLeft, target); + pExpr = pExpr->pLeft; + goto expr_code_doover; } case TK_TRIGGER: { |