aboutsummaryrefslogtreecommitdiff
path: root/src/trigger.c
diff options
context:
space:
mode:
authordan <dan@noemail.net>2013-10-03 12:29:38 +0000
committerdan <dan@noemail.net>2013-10-03 12:29:38 +0000
commit46539d7cfab6202ed6a6b5de7de5a6256c16f1ba (patch)
tree4adea647b4b003b296b8c2829ac17ec71506b3c2 /src/trigger.c
parent582d47d27a2540564bbf0bd060de73d1dd413e35 (diff)
downloadsqlite-46539d7cfab6202ed6a6b5de7de5a6256c16f1ba.tar.gz
sqlite-46539d7cfab6202ed6a6b5de7de5a6256c16f1ba.zip
Return an error if an attempt is made to create a trigger with an SQL variable embedded within it. If such a variable reference is found within a trigger definition loaded from the sqlite_master table, silently replace it with a NULL.
FossilOrigin-Name: f35f6ae3da77dbdf5f7a4a9927475659fc6e0ca6
Diffstat (limited to 'src/trigger.c')
-rw-r--r--src/trigger.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/trigger.c b/src/trigger.c
index b901d0767..bc31ba86a 100644
--- a/src/trigger.c
+++ b/src/trigger.c
@@ -291,8 +291,10 @@ void sqlite3FinishTrigger(
}
nameToken.z = pTrig->zName;
nameToken.n = sqlite3Strlen30(nameToken.z);
- if( sqlite3FixInit(&sFix, pParse, iDb, "trigger", &nameToken)
- && sqlite3FixTriggerStep(&sFix, pTrig->step_list) ){
+ if( sqlite3FixInit(&sFix, pParse, iDb, "trigger", &nameToken) && (
+ sqlite3FixTriggerStep(&sFix, pTrig->step_list)
+ || sqlite3FixExpr(&sFix, pTrig->pWhen)
+ )){
goto triggerfinish_cleanup;
}