1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

Fix a segfault in the authorizer when it is given a SELECT statement with

no FROM clause.  Ticket #896. (CVS 1954)

FossilOrigin-Name: 97d63b9290ef88b3cd8012c71fdd5b3c74eebc8f
This commit is contained in:
drh
2004-09-09 13:55:50 +00:00
parent 6aff507e73
commit 5689123ca6
4 changed files with 20 additions and 14 deletions

View File

@@ -14,7 +14,7 @@
** systems that do not need this facility may omit it by recompiling
** the library with -DSQLITE_OMIT_AUTHORIZATION=1
**
** $Id: auth.c,v 1.17 2004/09/06 17:24:12 drh Exp $
** $Id: auth.c,v 1.18 2004/09/09 13:55:50 drh Exp $
*/
#include "sqliteInt.h"
@@ -110,6 +110,7 @@ void sqlite3AuthRead(
const char *zCol; /* Name of the column of the table */
int iSrc; /* Index in pTabList->a[] of table being read */
const char *zDBase; /* Name of database being accessed */
TriggerStack *pStack; /* The stack of current triggers */
if( db->xAuth==0 ) return;
assert( pExpr->op==TK_COLUMN );
@@ -118,15 +119,14 @@ void sqlite3AuthRead(
}
if( iSrc>=0 && iSrc<pTabList->nSrc ){
pTab = pTabList->a[iSrc].pTab;
}else{
}else if( (pStack = pParse->trigStack)!=0 ){
/* This must be an attempt to read the NEW or OLD pseudo-tables
** of a trigger.
*/
TriggerStack *pStack; /* The stack of current triggers */
pStack = pParse->trigStack;
assert( pStack!=0 );
assert( pExpr->iTable==pStack->newIdx || pExpr->iTable==pStack->oldIdx );
pTab = pStack->pTab;
}else{
return;
}
if( pTab==0 ) return;
if( pExpr->iColumn>=0 ){