aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2018-04-28 04:16:43 +0000
committerdrh <drh@noemail.net>2018-04-28 04:16:43 +0000
commit1efa8023a1741fb79152f360e5c10392ccff8f6b (patch)
tree3662abcedac55949f46bf7638977f7b6a0a606f5 /src/expr.c
parent6bfd973ce67980e5d09c8adfc465767297193573 (diff)
downloadsqlite-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.c4
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: {