aboutsummaryrefslogtreecommitdiff
path: root/src/trigger.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2003-01-12 18:02:16 +0000
committerdrh <drh@noemail.net>2003-01-12 18:02:16 +0000
commited6c8671b342e9b3793e2603e7f098ba4fc092a4 (patch)
tree1243d500342286b978543d20e5c88264cedfa2e5 /src/trigger.c
parent49f0936ec79dcbdbd80134151658615726643fa1 (diff)
downloadsqlite-ed6c8671b342e9b3793e2603e7f098ba4fc092a4.tar.gz
sqlite-ed6c8671b342e9b3793e2603e7f098ba4fc092a4.zip
Initial check-in of the code for the new sqlite_set_authorizer() API function.
The code is mostly untested at this point. (CVS 827) FossilOrigin-Name: 52d5007f64d0af5286b2a0e1f0b9e53c86bece3f
Diffstat (limited to 'src/trigger.c')
-rw-r--r--src/trigger.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/trigger.c b/src/trigger.c
index 222d09de0..079a4c2f8 100644
--- a/src/trigger.c
+++ b/src/trigger.c
@@ -50,6 +50,8 @@ void sqliteCreateTrigger(
Trigger *nt;
Table *tab;
+ if( sqliteAuthCommand(pParse, "CREATE", "TRIGGER") ) goto trigger_cleanup;
+
/* Check that:
** 1. the trigger name does not already exist.
** 2. the table (or view) does exist.
@@ -102,6 +104,9 @@ void sqliteCreateTrigger(
" trigger on table: ", -1, pTableName->z, pTableName->n, 0);
goto trigger_cleanup;
}
+ if( sqliteAuthInsert(pParse, SCHEMA_TABLE(tab->isTemp), 1) ){
+ goto trigger_cleanup;
+ }
}
if (tr_tm == TK_INSTEAD){
@@ -337,6 +342,7 @@ void sqliteDropTrigger(Parse *pParse, Token *pName, int nested){
Table *pTable;
Vdbe *v;
+ if( sqliteAuthCommand(pParse, "DROP", "TRIGGER") ) return;
zName = sqliteStrNDup(pName->z, pName->n);
/* ensure that the trigger being dropped exists */
@@ -347,13 +353,18 @@ void sqliteDropTrigger(Parse *pParse, Token *pName, int nested){
sqliteFree(zName);
return;
}
+ pTable = sqliteFindTable(pParse->db, pTrigger->table);
+ assert(pTable);
+ if( sqliteAuthDelete(pParse, SCHEMA_TABLE(pTable->isTemp), 1) ){
+ sqliteFree(zName);
+ return;
+ }
+
/*
* If this is not an "explain", then delete the trigger structure.
*/
if( !pParse->explain ){
- pTable = sqliteFindTable(pParse->db, pTrigger->table);
- assert(pTable);
if( pTable->pTrigger == pTrigger ){
pTable->pTrigger = pTrigger->pNext;
}else{